我目前正在使用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>();
如果从地图中检索类名,是否可以访问内部类中的方法。
目前,我可以通过mapObject.get(key).getClass()
获取课程名称。
对此有任何帮助将非常感谢。谢谢。
答案 0 :(得分:1)
请参阅此代码,了解如何使用方法并按照您在评论中的要求通过反射调用。请注意,这段代码非常特别,而您正在尝试做的事情似乎并不正确。几乎没有人需要调用这样的方法。如果您可以在一个新问题中询问您试图解决的问题,您可能会看到其他更好的方法。
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);
}
}