public abstract class AbstractClass{
public String getName(){
return " AbstractClass";
}
}
public class concreteClass extends AbstractClass{
public String blahBlah(){
return " Hi";
}
}
如何使用反射调用getName?
答案 0 :(得分:1)
如果你有concreteObject
并且没有参数:
AbstractClass.class.getMethod("getName").invoke(concreteObject);
有关详细信息,您可以阅读课程Class中方法的java文档。
答案 1 :(得分:0)
我假设你问的是如何通过反射来调用它而不需要AbstractClass
的实例?如果这是问题,你就做不到。要调用类的实例方法(甚至通过反射),您必须有一个实例来调用该方法。由于该方法是公开的,如果你有一个实例,你可以直接调用它。
答案 2 :(得分: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);
}
}