PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Type safety Warnung.



derheini
26-10-2006, 20:03
Hi Leute,

habe hier folgendes Problem:


import java.util.*;

public class MainClass {
private static ArrayList<Long> colums = new ArrayList<Long>();
private static ArrayList<ArrayList> rows = new ArrayList<ArrayList>();
private static long blub= new Long(0);

public static void main(String[] args) {
for(int i=0; i<=20; i++){
colums = new ArrayList<Long>();
for(int j=0; j<=i; j++){
blub=new Long((fak(i))/(fak(j)*fak(i-j)));
colums.add(blub);
}
rows.add(colums);
}
System.out.print("\t");
for(int i=0; i<=rows.size()-1; i++){
System.out.print("k=" + i + "\t");
}
System.out.println();
for(int i=0; i<=rows.size()-1; i++){
colums = new ArrayList<Long>();
colums = rows.get(i); <-- (Warnung!!!!!!)
System.out.print("n=" + i + " >\t");
for(int j=0; j<=colums.size()-1; j++){
System.out.print(colums.get(j).toString() + "\t");
}
System.out.println();
}
}
private static long fak(int value){ ... }
}


An der Makierten stelle bekomme ich folgende Warnung:


Type safety: The expression of type ArrayList needs unchecked conversion to conform to ArrayList<Long>

Hat einer einen Vorschlag wie ich die weg bekomme?

Das der Code nicht 100% sauber ist weiss ich. :D

mfg derheini

bischi
26-10-2006, 20:46
Wie wärs, wenn du den code sauber schreiben würdest? Bzw. ne saubere Typkonversion durchführen tätest?

MfG Bischi

nul
26-10-2006, 21:51
Ausserdem macht die Zeile
colums = new ArrayList<Long>();
in der for-Schleife keinen Sinn weil nach
colums = rows.get(i);
nicht mehr zugegriffen werden kann.

falke2203
27-10-2006, 06:41
Ohne jetzt grundsätzlich etwas zu diesem Code zu sagen, die Warnung solltest du mit

private static ArrayList<ArrayList<Long>> rows = new ArrayList<ArrayList<Long>>();
weg bekommen

derheini
27-10-2006, 11:23
Ausserdem macht die Zeile
colums = new ArrayList<Long>();
in der for-Schleife keinen Sinn weil nach
colums = rows.get(i);
nicht mehr zugegriffen werden kann.

jo stimmt...


Ohne jetzt grundsätzlich etwas zu diesem Code zu sagen, die Warnung solltest du mit

private static ArrayList<ArrayList<Long>> rows = new ArrayList<ArrayList<Long>>();
weg bekommen

danke genau das war die Lösung, hätte ich auch selber drauf kommen können. :D

zeeman
04-11-2006, 15:54
private static long blub= new Long(0);

hat es einen bestimmten grund, dass du ne long-objekt mit dem "inhalt" 0 generiest, selbiges per autoboxing auspackst, und dann in ne primären datentyp packst?
ausser das die gc was zu tun bekommt?

das machst du später im code auch immer.
ist bei dem beispielt ja noch nicht schlimm, aber bei größeren projekten ist diese autoboxing nicht gerade hübsch. ;)