java: ungeprüfter Aufruf von getConstructor(java.lang.Klasse<?>...)
Ich bin mit der spiegelung zu konstruieren, die eine Klasse (ConfigBuilder), das eine Datei als argument:
Class myClassType = Class.forName(className);
Class[] types = new Class[] { File.class };
Constructor cons = myClassType.getConstructor(types);
Object[] constructorArgs = new Object[] { myFile };
cb = (ConfigBuilder) cons.newInstance(constructorArgs);
aber ich bekomme diese Warnung:
warning: [unchecked] unchecked call to getConstructor(java.lang.Class<?>...) as a member of the raw type java.lang.Class
Constructor cons = myClassType.getConstructor(types);
Offensichtlich, es scheint, dass getConstructor erwartet einen generischen Typ, so habe ich versucht, etwas wie:
Class<?>[] types = new Class<?>[] { File.class };
aber ich bekomme die gleiche Warnung
Irgendeine Idee ?
David
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Warnung bezieht sich eigentlich auf
myClassType
. Sie müssen parametrisiert werden (und diecons
) als gut.Class<?> myClassType = SpecificClass.class;
In meinem Umstand.Erstens ist dies nur eine Warnung und sollte nicht dazu führen Sie unnötige Panik bei der Arbeit mit Reflexion und Arten, die unbekannt sind zur compile-Zeit. Die Tugend der Generika ist stärker der Kompilierung die Typüberprüfung und alle, dass geht aus dem Fenster, sobald Sie rufen
Class.forName(className)
.Allerdings, wenn Sie wie die meisten Menschen (einschließlich mir), dann werden Sie wahrscheinlich wollen, um loszuwerden die Warnung, so dass er Sie nicht Fort, Sie ziehen die Aufmerksamkeit unnötig. Dafür kann man parametrisieren Konstruktor variable
cons
: