java - 调用Class类型对象的方法

标签 java class object methods

我会尝试将其设置得尽可能简单,因为它也让我感到困惑。

我有一个方法返回 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/

相关文章:

Java多线程暂停

java - 测试分配功能

java - 跨多个类传递参数

javascript - 在 javascript 中重建包含嵌套数组的对象数组

javascript - 使用用户提供的对象的属性(如果存在),否则使用默认值

java - 无需变量赋值的对象创建

java - 改变节点的值

java - 组织.hibernate.DuplicateMappingException : Table contains physical column name [coverage_name] referred to by multiple physical column names:

Python:发生不需要的变量更改

python - 你怎么知道两个对象什么时候可以通信?