Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使方法接受任何对象并检查其是否包含方法?_Java_Generic Programming - Fatal编程技术网

Java 如何使方法接受任何对象并检查其是否包含方法?

Java 如何使方法接受任何对象并检查其是否包含方法?,java,generic-programming,Java,Generic Programming,我正在为许多元素设置可见性的开和关。现在我想创建一个方法来接收一个对象,假设每个类的顶级父类都是对象,这就足够了吗?如果这是我应该做的,我应该如何投下他们? 我想检查接收到的对象是否包含setVisibility方法,以及它是否执行了一些操作 我是否应该尝试运行该方法并捕获异常?听起来很愚蠢。 那么我该怎么办呢?您可以使用或实现。您可以使用或实现。而不是使用对象来接收/处理。尝试定义您自己的接口甚至抽象类更合适。在接口或抽象类中定义可见性方法并处理它,而不是使用对象接收/处理。尝试定义自己的接口

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

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

您可以使用或实现。

您可以使用或实现。

而不是使用对象来接收/处理。尝试定义您自己的接口甚至抽象类更合适。在接口或抽象类中定义可见性方法并处理它,而不是使用对象接收/处理。尝试定义自己的接口或抽象类更合适。在接口或抽象类中定义可见性方法并对其进行处理参见此处的第一个示例


看这里的第一个例子


了解java.lang.Reflection了解java.lang.Reflection我确实建议为此使用一个接口。除非您有理由接受任何对象,否则接口都是为此目的而设计的简单解决方案。可能是他无法更改或添加接口的对象,例如库中的UI元素。不过,我确实建议为此使用接口。除非你有理由接受任何对象,接口都是为这个目的而设计的简单解决方案。可能是他不能更改或添加接口的对象,例如库中的UI元素。接受此答案是因为它的规范和代码示例。接受此答案是因为它的规范和代码示例。
   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);
         }
      }
   }
   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);
         }
      }
   }