我会尝试将其设置得尽可能简单,因为它也让我感到困惑。
我有一个方法返回 Class
类型的对象,即
public Class foo(){...}
当我调用此方法时,我将结果保存在 Class 类型的变量中,即
Class obj = new foo();
foo()
可以返回许多不同的类,但它们都包含相同的方法 bar()
。
如何从我的 obj
变量调用该方法?
我尝试了 obj.bar()
但 IDE 似乎不喜欢它。我明白了
Error:(59, 34) error: cannot find symbol method
bar()
最佳答案
看起来你想对行为进行分组,这就是 Java interfaces做:
interface Barer {
String bar();
}
class Foo implements Barer {
String bar() {
return "I'm a Foo";
}
}
class Fooz implements Barer {
String bar() {
return "I'm a Fooz";
}
}
然后在你的代码中你可以有类似的东西:
Barer obj;
if (something) {
obj = new Foo();
} else {
obj = new Fooz();
}
obj.bar()
事实上,将构造函数的返回值存储在 Class
对象中没有什么意义。
如果您确实需要一个 Class 对象(请记住,它只会指向该 Class,而不是您创建的实例),您可以使用 Java reflection :
Class obj = new foo();
Method method = obj.getDeclaredMethod("bar");
method.invoke(null);
关于java - 调用Class类型对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29141213/