java匿名类作为新方法的参数
当我通过反射搜索方法时,它显示了新提供的方法。但是我不知道如何调用这个方法,如果有人知道怎么做,请告诉我java匿名类作为新方法的参数,java,anonymous-class,Java,Anonymous Class,当我通过反射搜索方法时,它显示了新提供的方法。但是我不知道如何调用这个方法,如果有人知道怎么做,请告诉我 //some pakage pakage xyz; class A { // a simple method of class A public void aMethod() { //simple print statement System.out.println("A class method"); } } class B {
//some pakage
pakage xyz;
class A {
// a simple method of class A
public void aMethod() {
//simple print statement
System.out.println("A class method");
}
}
class B {
// a method of class B that takes A types as an argument
public void bMethod(A arg) {
Class c = Class.forName("xyz.A");
Method[] methods = c.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
}
}
class Test {
public static void main(String[] args) {
B bObj = new B();
bObj.bMethod(new A() {
public void anotherMethod() {
System.out.println("another method");
}
});
}
}
您可以使用反射调用特定对象上的方法:
public void invokeSomeMethodOnA(A arg, String methodName) {
Method method = arg.getClass().getDeclaredMethod(methodName);
//To invoke the method:
method.invoke(arg, parameters here);
}
我想也许这就是你想要的
package xyz;
import java.lang.reflect.Method;
class A {
// a simple method of class A
public void aMethod() {
//simple print statement
System.out.println("A class method");
}
}
class B {
// a method of class B that takes A types as an argument
public void bMethod(A arg) throws Exception {
Class c = Class.forName(arg.getClass().getName());
Method[] methods = c.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
method.invoke(arg);
}
}
}
class Test {
public static void main(String[] args) throws Exception {
B bObj = new B();
bObj.bMethod(new A() {
public void anotherMethod() {
System.out.println("another method");
}
});
}
}
请先格式化您的代码。我格式化了您的问题和代码,并修复了明显的错误。下次,我就投反对票。写问题时要小心。你还应该在更高的层次上解释你想要达到的目标。为什么要使用反射?为什么要使用这样的匿名类和其他没有人可以调用的方法呢。但是无论如何,如果您想找到这个额外的方法,您需要获得
arg
类的方法。不是A.Thank you method.invoke的方法(obj,这里是参数);它是参数中的同一对象(obj)吗?是的,该方法将在参数中的同一对象上调用。好的,谢谢krzysztof Cichoki