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