1

我正在为许多元素设置可见性。现在我想创建一个将接收 的方法Object,假设每个类的顶级父级都是Object,这就足够了吗?如果那是我应该做的,我应该如何施放它们?我想检查接收到的对象是否包含setVisibility方法以及它是否确实执行了一些操作。

我应该尝试运行该方法并捕获异常吗?听起来很愚蠢。那我该怎么办?

4

3 回答 3

2

您可以使用反射或实现接口

于 2012-05-17T18:01:46.037 回答
2

请参阅此处的第一个示例,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);
         }
      }
   }
于 2012-05-17T18:05:03.247 回答
0

与其使用 Object 接收/处理,不如尝试定义自己的接口甚至抽象类更合适。在您的接口或抽象类中定义您的可见性方法并处理它

于 2012-05-17T18:02:44.133 回答