Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

反射从将动态创建的类中获取值

我试图从另一个类中的一个类中获取值,该类将被动态创建,还包括方法。看看我列举的例子

InterfaceA.java

public interface InterfaceA{
    public ArrayList<?> getValues();
}

ClassA.java / ClassB.java(consider another same class have value="World")

public Class A implements InterfaceA{
    String value = "Hello";

    public ArrayList<?> getValues(){
        ArrayList<String> values = new ArrayList<String>();
        values.add(this.value);
        return values ;
    }
}

ClassC.java

public Class C{
    public void getValues(){
        Object modelObject;
        Method getValues;
        modelObject = resolveClass("A"); // arg = classPath
        getValues= modelObject.getClass().getMethod("getValues");
        getValues.invoke(modelObject);
        ArrayList<?> classValues;

        // How to access Class A values from here
        // I want to do These Lines
        // classValue = get value from A/B.getValues() dynamically
    }

    private Object resolveClass(String className) throws
    ClassNotFoundException, NoSuchMethodException, SecurityException, 
    InstantiationException, IllegalAccessException, IllegalArgumentException,
    InvocationTargetException {
        Class<?> loadClass = Class.forName(className);
        Constructor<?> constructor = loadClass.getConstructor(String.class);
        Object object = constructor.newInstance(new Object[] {});

        return object;
    }
}

如何访问该方法返回的值作为ArrayList<>;评论中提到的


共 (1) 个答案

  1. # 1 楼答案

    伪代码

    Method m = .. getMethod("getValues");
    Object o = m.invoke(modelObject);
    ArrayList<?> classValues = (ArrayList<?>) o
    

    你可以找到更多信息here