Annahme: Wir haben eine Klasse "MyClassToCheck" (siehe code Snippet unten)
Von einer Anwendung aus möchte ich prüfen, od diese Klasse Methoden bietet, die einer bestimmten Signatur folgen. Dabei kann ich aber die Verfügbarkeit aller im Code dieser Klasse verwendeten Typen nicht voraussetzen. (symbolisiert durch unten verwendete "ClassNotOnClasspath")
In dieser Anwendung hol ich mir die zu überprüfende Klasse mit "Class.forName" und ruf dann getMethods() auf.
....
cl = Class.forName("checkit.MyClassToCheck");
Method[] meth=cl.getMethods();
....
Klarerweise darf die Klasse keinen static member von "ClassNotOnClasspath" haben.
Aber warum endet der call mit einem NCDFE, wenn eine Var dieses Typs innerhalb eines try-catch Blocks deklariert wird? ???:L
Kann jemand von Euch Gurus für Aufklärung sorgen ?
Thx,
Bernhard
---------------------------------------------------
Von einer Anwendung aus möchte ich prüfen, od diese Klasse Methoden bietet, die einer bestimmten Signatur folgen. Dabei kann ich aber die Verfügbarkeit aller im Code dieser Klasse verwendeten Typen nicht voraussetzen. (symbolisiert durch unten verwendete "ClassNotOnClasspath")
In dieser Anwendung hol ich mir die zu überprüfende Klasse mit "Class.forName" und ruf dann getMethods() auf.
....
cl = Class.forName("checkit.MyClassToCheck");
Method[] meth=cl.getMethods();
....
Klarerweise darf die Klasse keinen static member von "ClassNotOnClasspath" haben.
Aber warum endet der call mit einem NCDFE, wenn eine Var dieses Typs innerhalb eines try-catch Blocks deklariert wird? ???:L
Kann jemand von Euch Gurus für Aufklärung sorgen ?
Thx,
Bernhard
---------------------------------------------------
Java:
package checkit;
import refl.ReflTest2.AnotherParamOnClassPath;
import refl.ReflTest2.ParamOnClassPath;
import refl.ReflTest2.RetValOnClassPath;
import tocheck.ClassNotOnClassPath;
class MyClassToCheck
{
ClassNotOnClassPath instance_member1=new ClassNotOnClassPath();; // --> WORKS !!
//static ClassNotOnClassPath static_member1=new ClassNotOnClassPath(); // --> DOES NOT WORK which is comprehensible!!
public RetValOnClassPath myMethodName( ParamOnClassPath par1, AnotherParamOnClassPath par2)
{
ClassNotOnClassPath local=new ClassNotOnClassPath(); // --> WORKS !!
if(System.getProperty("aProperty")!=null)
{
ClassNotOnClassPath blocklocal=new ClassNotOnClassPath(); // --> WORKS !!
System.out.println(blocklocal);
}
try {
//ClassNotOnClassPath trylocal=new ClassNotOnClassPath(); // DOES NOT WORK !!!
RetValOnClassPath rv=new RetValOnClassPath();
}
catch(Exception e)
{
e.printStackTrace();
}
return new RetValOnClassPath();
}
}