我正在为许多元素设置可见性。现在我想创建一个将接收 的方法Object
,假设每个类的顶级父级都是Object
,这就足够了吗?如果那是我应该做的,我应该如何施放它们?我想检查接收到的对象是否包含setVisibility
方法以及它是否确实执行了一些操作。
我应该尝试运行该方法并捕获异常吗?听起来很愚蠢。那我该怎么办?
我正在为许多元素设置可见性。现在我想创建一个将接收 的方法Object
,假设每个类的顶级父级都是Object
,这就足够了吗?如果那是我应该做的,我应该如何施放它们?我想检查接收到的对象是否包含setVisibility
方法以及它是否确实执行了一些操作。
我应该尝试运行该方法并捕获异常吗?听起来很愚蠢。那我该怎么办?
请参阅此处的第一个示例,http://java.sun.com/developer/technicalArticles/ALT/Reflection/
import java.lang.reflect.*;
public class DumpMethods {
public static void main(String args[])
{
try {
Class c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
}
catch (Throwable e) {
System.err.println(e);
}
}
}
你基本上得到你正在查看的对象的类变量,调用getDeclaredMethods()
来获取方法名称的数组。然后,您可以检查类中是否存在方法名称。
在页面的下方还有一个调用该方法的示例。
import java.lang.reflect.*;
public class method2 {
public int add(int a, int b)
{
return a + b;
}
public static void main(String args[])
{
try {
Class cls = Class.forName("method2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method meth = cls.getMethod(
"add", partypes);
method2 methobj = new method2();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj
= meth.invoke(methobj, arglist);
Integer retval = (Integer)retobj;
System.out.println(retval.intValue());
}
catch (Throwable e) {
System.err.println(e);
}
}
}
与其使用 Object 接收/处理,不如尝试定义自己的接口甚至抽象类更合适。在您的接口或抽象类中定义您的可见性方法并处理它