如何从类中获取方法。Java中的forName()?
已编辑
我有一个未知的类,只有名为namo的字符串变量知道,它的方法名为paintah,带有Graphics g参数。现在我正努力做到:
Class.forName(namo).getMethod("paintah", ??????????);
我应该用什么来代替问号?我花了好几个小时想弄明白
同样,如果我使用相同代码的同一个类(但只有我知道它的名称Classo),如下所示:
new Classo.paintah(g);
它起作用了
更新 我有两个类,一个有这部分代码:
public static Classo cla = new Classo();
public void paintComponent(Graphics g){
Class.forName(namo).getMethod("paintah", Graphics.class); //not working
cla.paintah(g); // working
}
也就是说,主类,Classo的代码与未知类的代码相同,它有这部分代码:
public void paintah(Graphics g){
g.fillRect(20,20,200,200);
}
所以是的,我希望这能给你一个更好的主意
# 1 楼答案
如果你有以下课程:
然后你可以得到如下的方法对象:
从getMethod()javadoc:
# 2 楼答案
一旦你得到了这个方法,你就需要调用它。 这里有一个解释:call static method given a class object in java
# 3 楼答案
您正在使用^{} 方法,该方法接受
Class
对象的varargs参数,这些对象表示目标方法中的参数类型如果只需要一个
Graphics
对象,那么提供Graphics.class
:因为你知道类名,你甚至不需要
Class.forName
,你可以使用类文本来访问它无论如何,您都需要捕获从
getMethod
调用中抛出的Exceptions
: