Sie verwenden können Reflection
Beispielklasse
package com.google.util;
Class Maths
{
public Integer doubleIt(Integer a)
{
return a*2;
}
}
und benutzen Sie folgende this-
Schritt 1: - Belastungsklasse mit gegebenen Eingangsnamen als String
Class<?> obj=Class.forName("Complete_ClassName_including_package");
//like:- Class obj=Class.forName("com.google.util.Maths");
Schritt 2: - get-Methode mit bestimmten Namen und Parametertyp
Method method=obj.getMethod("NameOfMthodToInvoke", arguments);
//arguments need to be like- java.lang.Integer.class
//like:- Method method=obj.getMethod("doubleIt",java.lang.Integer.class);
Schritt 3: - Methode Invoke Instanz vom Objekt und Argumente Indem
Object obj2= method.invoke(obj.newInstance(), id);
//like :- method.invoke(obj.newInstance(), 45);
Sie tun können SCHRITT 2 WIE DIESES AUCH
(wenn Sie weiß nicht, bestimmte Methode existiert in einer Klasse, die Sie alle Methode überprüfen, indem Methode des Array Looping)
Method[] methods=obj.getMethods();
Method method=null;
for(int i=0;i<methods.length();i++)
{
if(method[1].getName().equals("methodNameWeAreExpecting"))
{
method=method[i];
}
}
Sie kann nur tun, wenn Sie bei der Kompilierung wissen, dass Instanz ein FooBar sein wird - das dann bedeutet, dass Sie Reflektion überhaupt nicht benötigen würden! – Chii
@Chii: Nicht notwendig. FooBar könnte der allgemeinste Typ sein, von dem derjenige, den du durch Reflektion bekommst, erbt. So arbeiten zum Beispiel JDBC-Treiber und wie viele Plugin-Architekturen entworfen werden. – quosoo