Warnings beheben oder Abwärtskompatibilität waren

Status
Nicht offen für weitere Antworten.

Sneakizzel

Mitglied
Moin leutz,

es ist eigentlich kein Problem ich wollte nur mal Eure Meinung
dazu hören, also seit Java 1.5 geht das hier:

Code:
private HashMap<String, JTextField> textfieldMap
textfieldMap = new HashMap<String, JTextField>();
textfieldMap.get("feld").setEditable(false);
Das funz dann natürlich nicht unter 1.5, schreibt man aber
dies
Code:
private HashMap textfieldMap
textfieldMap = new HashMap();
((JTextField) textfieldMap.get("feld")).setEditable(false);
Funzt es auch kleiner 1.5 aber gibt natürlich ab 1.5 folgender
Warning:
Type safety: The method put(Object, Object) belongs to the raw type HashMap. References to
generic type HashMap<K,V> should be parameterized

Also was wäre nun besser den Warning zu beheben oder die Abwärtskompatibilität
zu waren?

Gruß sneakizzel[/code]
 

SnooP

Top Contributor
Kann man so pauschal nicht sagen... - immer abhängig von dem was du brauchst. Wenn du Abwärtskompatibilität brauchst - dann verzichte auf Generics und kompilier auch auf 1.4 oder was auch immer... - ansonsten würde ich aber nicht mehr darauf verzichten, da es ja doch immense Vorteile mit sich bringt.
 

KSG9|sebastian

Top Contributor
Paar kleine 1.5-Tücken:

Code:
public class OddBehavior
{
  public static void main(String[] args)
  {
     List<Integer> list = Arrays.asList(-2, -1, 0, 1, 2);
     boolean foundOdd = false;
     for (Iterator<Integer> it = list.iterator(); it.hasNext();)
     {
          foundOdd = foundOdd || isOdd(it.next());
     }
     System.out.println(foundOdd);
  }
  private static boolean isOdd(int i)
  {
     return (i & 1) != 0;
  }
}
Was passiert?

Oder auch ganz nett:

Code:
public class SetList
{
  public static void main(String[] args)
  {
     Set<Integer> set = new LinkedHashSet<Integer>();
     List<Integer> list = new ArrayList<Integer>();
     for (int i = -3; i < 3; i++)
     {
       set.add(i);
       list.add(i);
     }
     for (int i = 0; i < 3; i++)
     {
       set.remove(i);
       list.remove(i);
     }
     System.out.println(set + " " + list);
  }
}
Was wird ausgegeben?


Hab noch 8 weitere..aber grad net soviel zeit alles zu suchen :)
 
B

Beni

Gast
KSG9|sebastian hat gesagt.:
Paar kleine 1.5-Tücken:

Code:
public class OddBehavior
{
  public static void main(String[] args)
  {
     List<Integer> list = Arrays.asList(-2, -1, 0, 1, 2);
     boolean foundOdd = false;
     for (Iterator<Integer> it = list.iterator(); it.hasNext();)
     {
          foundOdd = foundOdd || isOdd(it.next());
     }
     System.out.println(foundOdd);
  }
  private static boolean isOdd(int i)
  {
     return (i & 1) != 0;
  }
}
Was passiert?
Die Endlosschleife hat wohl kaum etwas mit Java 1.5 zu tun, der ||-Operator konnte schon immer das zweite Argument übergehen.

Oder auch ganz nett:

Code:
public class SetList
{
  public static void main(String[] args)
  {
     Set<Integer> set = new LinkedHashSet<Integer>();
     List<Integer> list = new ArrayList<Integer>();
     for (int i = -3; i < 3; i++)
     {
       set.add(i);
       list.add(i);
     }
     for (int i = 0; i < 3; i++)
     {
       set.remove(i);
       list.remove(i);
     }
     System.out.println(set + " " + list);
  }
}
Was wird ausgegeben?
Nett, aber mit klugem Syntaxhighlighting fällt das sofort auf... :wink:
 

Leroy42

Top Contributor
Beni hat gesagt.:
Nett, aber mit klugem Syntaxhighlighting fällt das sofort auf... :wink:
:shock:
Also eclipse hat demnach kein kluges Syntaxhighlighting?

Ich selbst bin erst beim Debuggen auf die Erklärung
dieses scheinbaren Widerspruchs gekommen.
Aber was wäre die Alternative? Eine ambigous-Warnung des Compiler?

Wohl nicht wirklich. Wir müssen halt zugunsten des Fortschritts damit leben.
 
B

Beni

Gast
Leroy42 hat gesagt.:
Also eclipse hat demnach kein kluges Syntaxhighlighting?
Das Standard-Highlighting sicherlich nicht, aber niemand hindert dich daran, selbst ein bisschen rumzuwerkeln :bae:
Übrigens könnte Eclipse auch eine Warnung oder gar ein Error generieren - falls dir das lieber ist.
 

Leroy42

Top Contributor
Beni hat gesagt.:
aber niemand hindert dich daran, selbst ein bisschen rumzuwerkeln

Wie das denn? :shock:

Die Frage war rhetorisch! Du brauchst sie nicht zu beantworten;
wenn ich daran mal Interesse haben sollte, werde ich mich
schon selbst einlesen. :D
 

Tobias

Top Contributor
Ich vermute - ohne es ausprobiert zu haben -, dass set und list nicht leer sind, weil die Identität der Autoboxing-Objekte nicht dieselbe ist?

mpG
Tobias
 

Leroy42

Top Contributor
Hääh! :autsch:

Die Schwierigkeit besteht darin, daß eine Liste (im Unterschied zu einem Set)
zwei remove-Methoden besitzt. Eine der das zu löschende Objekt übergeben wird
und eine die den zu löschenden Index bekommt. Set besitzt nur die mit dem zu löschenden Objekt,
die bei Aufruf eines ints aufgerufen wird (Autoboxing).

Bei List hingegen wird die Methode mit dem Parameter int aufgerufen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben