2009-04-23 2 views
3

Ich bekomme eine Reihe von Warnungen, nachdem ich meine Programme kompiliert habe, ich weiß, dass ich sie ausschalten kann, aber ich will sie richtig machen, und doch kenne ich nicht die richtigen Wege, um sie zu reparieren, für einige von ihnen beschwert sich so oder so:Wie bekomme ich die Java-Syntax korrekt?

BS=(TreeSet)B.next() 
BS=(TreeSet<Object>)B.next() 

Irgendwelche Hilfe bitte? Hier sind einige von ihnen:

170: warning: [unchecked] unchecked call to getMethod(java.lang.String,java.lang.Class<?>...) as a member of the raw type java.lang.Class 
     Method createMethod=factory.getMethod("create"+currentValue, parameters); 
--------------------------------------------------------------------------------------------------------------------------------- 
168  Class factory=Class.forName("net.sourceforge.barbecue.BarcodeFactory"); 
169  Class [] parameters={ "".getClass() }; 
170  Method createMethod=factory.getMethod("create"+currentValue, parameters); 
======================================================================================================= 
76: warning: [unchecked] unchecked conversion 
found : java.util.Vector[] 
required: java.util.Vector<Stock_Region_Element>[] 
    static Vector<Stock_Region_Element> Region[]=new Vector[Nm_Lib.Region_Num]; 
--------------------------------------------------------------------------------------------------------------------------------- 
76  static Vector<Stock_Region_Element> Region[]=new Vector[Nm_Lib.Region_Num]; 
======================================================================================================= 
1365: warning: [unchecked] unchecked cast 
found : java.lang.Object 
required: java.util.Vector<Contact_Info_Entry> 
     Loaded_Contact_Info_Entry_Vector=(Vector<Contact_Info_Entry>)XML_Decoder.readObject(); 
--------------------------------------------------------------------------------------------------------------------------------- 
1358 Vector<Contact_Info_Entry> Loaded_Contact_Info_Entry_Vector=new Vector<Contact_Info_Entry>(); 
1359  
1360 if (new File(A_Path).exists()) 
1361  try 
1362  { 
1363//  Out("A_Path="+A_Path); 
1364  XML_Decoder=new XMLDecoder(new BufferedInputStream(new FileInputStream(A_Path))); 
1365  Loaded_Contact_Info_Entry_Vector=(Vector<Contact_Info_Entry>)XML_Decoder.readObject(); 
======================================================================================================= 
1902: warning: [unchecked] unchecked cast 
found : java.lang.Object 
required: java.util.Vector<java.awt.font.TextLayout> 
     if (textToUse == FILE_TEXT) backupLineBreakTLs=(Vector<TextLayout>) lineBreakTLs.clone(); 
--------------------------------------------------------------------------------------------------------------------------------- 
1692 private Vector<TextLayout> lineBreakTLs=null; 
1693 for (int i=0; i < fileText.length; i++) 
1694 { 
1695  AttributedString as=new AttributedString(fileText[i],g2.getFont().getAttributes()); 
1696  LineBreakMeasurer lbm=new LineBreakMeasurer(as.getIterator(),g2.getFontRenderContext()); 
1697  while (lbm.getPosition() < fileText[i].length()) lineBreakTLs.add(lbm.nextLayout((float) w)); 
1698 } 
...... 
1901 Vector<TextLayout> backupLineBreakTLs=null; 
1902 if (textToUse == FILE_TEXT) backupLineBreakTLs=(Vector<TextLayout>) lineBreakTLs.clone(); 
======================================================================================================= 
143: warning: [unchecked] unchecked conversion 
found : java.util.TreeSet 
required: java.util.TreeSet<java.lang.Object> 
      BS=(TreeSet)B.next(); 
--------------------------------------------------------------------------------------------------------------------------------- 
139   TreeSet<Object> Sub_Set=new TreeSet<Object>(TreeSet_Order); 
140   Sub_Set.add(First); 
141   if (Debug) System.out.println("=7.20= Sub_Set="+Sub_Set); 
142   TreeSet<Object> BS=new TreeSet<Object>(TreeSet_Order); 
143   BS=(TreeSet)B.next(); 
======================================================================================================= 
813: warning: [unchecked] unchecked cast 
found : java.lang.Object 
required: java.util.Vector<java.lang.Object> 
    Vector<Object> dataRow=(Vector<Object>)rows.elementAt(row); 
--------------------------------------------------------------------------------------------------------------------------------- 
813 Vector<Object> dataRow=(Vector<Object>)rows.elementAt(row); 
======================================================================================================= 
199: warning: [unchecked] unchecked cast 
found : java.lang.Object 
required: java.util.Vector<java.lang.String> 
     comboModel=(Vector<String>)(ois.readObject()); 
--------------------------------------------------------------------------------------------------------------------------------- 
19 private static Vector<String> comboModel; 
...... 
199  comboModel=(Vector<String>)(ois.readObject()); 
======================================================================================================= 
71: warning: [unchecked] unchecked conversion 
found : LoadLibraryAction 
required: java.security.PrivilegedAction<T> 
    static { java.security.AccessController.doPrivileged(new LoadLibraryAction("jpeg")); } 
71: warning: [unchecked] unchecked method invocation: <T>doPrivileged(java.security.PrivilegedAction<T>) in java.security.AccessController is applied to (LoadLibraryAction) 
    static { java.security.AccessController.doPrivileged(new LoadLibraryAction("jpeg")); } 
--------------------------------------------------------------------------------------------------------------------------------- 
70 // load the jpeg lib when created. 
71 static { java.security.AccessController.doPrivileged(new LoadLibraryAction("jpeg")); } 
======================================================================================================= 
184: warning: [unchecked] unchecked cast 
found : java.lang.Object 
required: java.util.Vector<java.lang.Object> 
     trans_frame.Events_Vector=(Vector<Object>)s.readObject(); 
--------------------------------------------------------------------------------------------------------------------------------- 
183  ObjectInputStream s=new ObjectInputStream(in); 
184  trans_frame.Events_Vector=(Vector<Object>)s.readObject();  
======================================================================================================= 
3473: warning: [unchecked] unchecked call to getConstructor(java.lang.Class<?>...) as a member of the raw type java.lang.Class 
     java.lang.reflect.Constructor constructor=cl.getConstructor(new Class[] {String.class});  // get the constructor with one parameter 
--------------------------------------------------------------------------------------------------------------------------------- 
3473  java.lang.reflect.Constructor constructor=cl.getConstructor(new Class[] {String.class});  // get the constructor with one parameter 
======================================================================================================= 
3476: warning: [unchecked] unchecked call to getMethod(java.lang.String,java.lang.Class<?>...) as a member of the raw type java.lang.Class 
     java.lang.reflect.Method objMethod=cl.getMethod(Method_Name,arguments);      // get the method 
--------------------------------------------------------------------------------------------------------------------------------- 
3475  Class arguments[]=new Class[] { };               // the method has no argument 
3476  java.lang.reflect.Method objMethod=cl.getMethod(Method_Name,arguments);      // get the method 
======================================================================================================= 
486: warning: [unchecked] unchecked call to getConstructor(java.lang.Class<?>...) as a member of the raw type java.lang.Class 
       Constructor ctor=cls.getConstructor(new Class[]{String.class}); 
--------------------------------------------------------------------------------------------------------------------------------- 
485    Class cls=Class.forName(loader); 
486    Constructor ctor=cls.getConstructor(new Class[]{String.class}); 
======================================================================================================= 
476: warning: [unchecked] unchecked method invocation: <T>doPrivileged(java.security.PrivilegedAction<T>) in java.security.AccessController is applied to (<anonymous java.security.PrivilegedAction>) 
    JarClassLoader bootLoader=(JarClassLoader)AccessController.doPrivileged(
--------------------------------------------------------------------------------------------------------------------------------- 
476 JarClassLoader bootLoader=(JarClassLoader)AccessController.doPrivileged(
======================================================================================================= 
224: warning: [unchecked] unchecked method invocation: <T>sort(java.util.List<T>) in java.util.Collections is applied to (java.util.List<Sorted_List_Model.SortedListEntry>) 
     Collections.sort(sortedModel); 
--------------------------------------------------------------------------------------------------------------------------------- 
24 private List<SortedListEntry> sortedModel; 
105 sortedModel=new ArrayList<SortedListEntry>(size); 
224  Collections.sort(sortedModel); 
======================================================================================================= 
325: warning: [unchecked] unchecked conversion 
found : java.util.List 
required: java.util.List<? extends java.lang.Comparable<? super Sorted_List_Model.SortedListEntry>> 
     insertionPoint=Collections.binarySearch((List)sortedModel,entry); 
--------------------------------------------------------------------------------------------------------------------------------- 
320 private int findInsertionPoint(SortedListEntry entry) 
321 { 
322 int insertionPoint=sortedModel.size(); 
323 if (sortOrder != SortOrder.UNORDERED) 
324 { 
325  insertionPoint=Collections.binarySearch((List)sortedModel,entry); 
======================================================================================================= 
361: warning: [unchecked] unchecked call to compare(T,T) as a member of the raw type java.util.Comparator 
     int comparison=comparator.compare(thisElement, thatElement); 
--------------------------------------------------------------------------------------------------------------------------------- 
348 public int compareTo(Object o) 
349 { 
350  // retrieve the element that this entry points to in the original model 
351  Object thisElement=unsortedModel.getElementAt(index); 
352  SortedListEntry thatEntry=(SortedListEntry)o; 
353  // retrieve the element that thatEntry points to in the original model 
354  Object thatElement=unsortedModel.getElementAt(thatEntry.getIndex()); 
355  if (comparator instanceof Collator) 
356  { 
357  thisElement=thisElement.toString(); 
358  thatElement=thatElement.toString(); 
359  } 
360  // compare the base model's elements using the provided comparator 
361  int comparison=comparator.compare(thisElement, thatElement); 
======================================================================================================= 
3201: warning: [unchecked] unchecked method invocation: <T>sort(T[],java.util.Comparator<? super T>) in java.util.Arrays is applied to (java.io.File[],<anonymous java.util.Comparator>) 
    Arrays.sort(files,new Comparator() { public int compare(final Object o1,final Object o2) { return By_Ascending_Date?new Long(((File)o1).lastModified()).compareTo(new Long(((File) o2).lastModified())):new Long(((File)o2).lastModified()).compareTo(new Long(((File) o1).lastModified())); } }); 
--------------------------------------------------------------------------------------------------------------------------------- 
3197 public static File[] Get_File_List_From_Dir_By_Date(String Dir,final boolean By_Ascending_Date) 
3198 { 
3199 if (!new File(Dir).isDirectory()) return null; 
3200 File files[]=new File(Dir).listFiles(); 
3201 Arrays.sort(files,new Comparator() { public int compare(final Object o1,final Object o2) { return By_Ascending_Date?new Long(((File)o1).lastModified()).compareTo(new Long(((File) o2).lastModified())):new Long(((File)o2).lastModified()).compareTo(new Long(((File) o1).lastModified())); } }); 
+4

+1 für nicht SuppressWarnings mit! – erickson

+1

Verwenden Sie auch nicht Vector und Arrays. – erickson

Antwort

2

Ich denke, dass ein gewisses Maß davon unvermeidlich ist. Ich möchte die ungeprüfte Cast-Warnung lokalisieren, wo es die einzige Zeile in der Routine ist, und dann diese Antwort mit @SuppressWarnings unterdrücken ("unchecked"). Auf diese Weise werden durch die Unterdrückung von Warnungen keine unbeabsichtigten Ereignisse an anderer Stelle in meiner Methode ausgeblendet. Dies ist bei Generika üblich, insbesondere beim Mischen roher Sammlungen (z. B. Liste) mit typisierten Sammlungen (z. B. Liste). Wenn Sie Bibliotheken verwenden, die rohe Sammlungen verwenden, ist es sehr schwierig, diese Warnungen vollständig zu vermeiden.

+0

Oder machen Sie es so, dass der unkontrollierte Cast bei der Initialisierung einer lokalen Variablen auftritt, dann unterdrücken Sie einfach die Warnung in dieser Zeile. –

+0

Es macht mich auf der einen Seite besser, weil es nicht meine Schuld ist, aber auf der anderen Seite macht es mich auch genervt, weil Java nicht sicherstellen kann, dass es deine Absicht versteht. Vielen Dank ! – Frank

0

Javas Validierungssystem ist ziemlich fusselartig, es kann Sie sogar gelegentlich vor Dingen warnen, die ohne eine ziemlich ernste Re-Implementierung eines Abschnitts nicht behoben werden können.

Wenn Sie wirklich interessiert sind, sollten Sie google "Java statische Code-Analyse", gibt es einige erstaunliche Tools, die Ihren Code untersuchen können und können Ihnen eine viel tiefere Analyse der Probleme geben.

Ich glaube, dass Sie mit einem statischen Analysewerkzeug viel mehr Fortschritte machen werden, als zu versuchen, Java-Warnungen zu bereinigen.

+0

Danke für den Rat, ich benutze Netbeans, ich frage mich, ob es solche Funktionen hat, ich wünsche definitiv es tut! – Frank

+2

Versuchen Sie Findbugs (Netbeans Plugin hier https://sqe.dev.java.net/updatecenters/nbheaven-updatecenter.xml). Es gibt Ihnen eine umfassende (die meiste Zeit;)) Beschreibung des Problems und empfehlen, es zu beheben. – Olivier

+0

Ja, Findbugs soll ausgezeichnet sein. Ich habe es nicht benutzt und konnte mich nicht an den Namen erinnern oder ich hätte es gepostet. –

1

Generika sind auf jeden Fall vorzuziehen Lösung, z.B .:

Class<? extends SomeClass> cl = inst.getClass();