如何访问未知的 class 方法
How to access unknown class methods
我目前正在使用 Java 语言进行编码,但我面临的情况是
class A{
static class A1{
void same1(){}
int same2(){}
}
static class A2{
void same1(){}
int same2(){}
}
}
我使用泛型将对象存储在地图中,我将描述和对象存储为 A1 和 A2
Map<String, Object> mapObject=new HashMap<String, Object>();
如果我从映射中检索 classname,是否可以访问内部 classes 中的方法。
目前,我可以通过 mapObject.get(key).getClass()
获取 class 名称。
任何关于这方面的帮助都会非常感谢 appreciated.Thank 你。
查看此代码以了解如何使用方法并按照您在评论中的要求通过反射进行调用。请注意此代码非常临时,您尝试执行的操作似乎不正确。几乎不需要调用这样的方法。如果您可以在一个新问题中询问您正在尝试解决的问题是什么,您可能会看到其他更好的方法。
package com.so;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class Sample {
private Map<String,Foo> mapObject = new HashMap<String,Foo>();
public Sample(){
Foo foo = new Foo();
mapObject.put("key", foo);
}
public void callMethods() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Method[] methods = mapObject.get("key").getClass().getDeclaredMethods();
Object objectString = new String();
objectString = "Hello";
for (Method method : methods) {
if (method.getName().equalsIgnoreCase("printThisString")){
method.invoke(mapObject.get("key"), objectString) ;
}
}
}
public static void main(String...args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Sample sample = new Sample();
sample.callMethods();
}
}
class Foo {
public void printThisString(String param){
System.out.println(param);
}
}
我目前正在使用 Java 语言进行编码,但我面临的情况是
class A{
static class A1{
void same1(){}
int same2(){}
}
static class A2{
void same1(){}
int same2(){}
}
}
我使用泛型将对象存储在地图中,我将描述和对象存储为 A1 和 A2
Map<String, Object> mapObject=new HashMap<String, Object>();
如果我从映射中检索 classname,是否可以访问内部 classes 中的方法。
目前,我可以通过 mapObject.get(key).getClass()
获取 class 名称。
任何关于这方面的帮助都会非常感谢 appreciated.Thank 你。
查看此代码以了解如何使用方法并按照您在评论中的要求通过反射进行调用。请注意此代码非常临时,您尝试执行的操作似乎不正确。几乎不需要调用这样的方法。如果您可以在一个新问题中询问您正在尝试解决的问题是什么,您可能会看到其他更好的方法。
package com.so;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class Sample {
private Map<String,Foo> mapObject = new HashMap<String,Foo>();
public Sample(){
Foo foo = new Foo();
mapObject.put("key", foo);
}
public void callMethods() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Method[] methods = mapObject.get("key").getClass().getDeclaredMethods();
Object objectString = new String();
objectString = "Hello";
for (Method method : methods) {
if (method.getName().equalsIgnoreCase("printThisString")){
method.invoke(mapObject.get("key"), objectString) ;
}
}
}
public static void main(String...args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Sample sample = new Sample();
sample.callMethods();
}
}
class Foo {
public void printThisString(String param){
System.out.println(param);
}
}