从 Class 中获取将动态创建的值
Get values from Class that will be created dynamically
我正在尝试从另一个 class 中的 class 获取值,这将动态创建,也将动态创建方法。查看我已经完成的这些示例。
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<>?
伪代码...
Method m = .. getMethod("getValues");
Object o = m.invoke(modelObject);
ArrayList<?> classValues = (ArrayList<?>) o
您可以找到更多信息here
我正在尝试从另一个 class 中的 class 获取值,这将动态创建,也将动态创建方法。查看我已经完成的这些示例。
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<>?
伪代码...
Method m = .. getMethod("getValues");
Object o = m.invoke(modelObject);
ArrayList<?> classValues = (ArrayList<?>) o
您可以找到更多信息here