如何在java中使用反射调用抽象类的具体方法

时间:2013-04-30 17:09:29

标签: java reflection abstract-class

public abstract class AbstractClass{

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

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

}

如何使用反射调用getName?

3 个答案:

答案 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);
     }
}