0
public abstract class AbstractClass{

    public String getName(){    
        return " AbstractClass";
    }
}

public class concreteClass extends AbstractClass{
    public String blahBlah(){    
        return " Hi";
    }

}

如何使用反射调用 getName?

4

3 回答 3

1

如果你有concreteObject并且没有参数:

AbstractClass.class.getMethod("getName").invoke(concreteObject);

有关更多详细信息,您可以阅读Class 类中方法的 java 文档。

于 2013-04-30T17:16:30.673 回答
0

我假设您在问如何通过反射调用它而没有AbstractClass? 如果这是问题,你就不能这样做。要调用类的实例方法(甚至通过反射),您必须有一个实例来调用该方法。由于该方法是公共的,如果您确实有一个实例,您可以直接调用它。

于 2013-04-30T17:16:16.527 回答
0

尝试这个:

class MyTest {
     @Test
     public void test1() throws Exception {
         class TestClass extends AbstractClass {
             // implement abstract methods if exists
         }
         Method method = AbstractClass.class.getDeclaredMethod("getName");
         String str = (String) method.invoke(new TestClass());
         assertEquals(" AbstractClass", str);
     }
}
于 2017-03-20T14:53:34.277 回答