Java问题,如何从未知对象获取方法的值

joj*_*ojo 1 java methods dynamic

我在系统中定义了很多对象,可能有1000个对象,其中一些有这个方法:

public Date getDate();
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以做这样的事情:

Object o = getFromSomeWhere.....;

Method m = o.getMethod("getDate");
Date date = (Date) m.getValue();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 12

如果你可以让它们都实现一个接口,那肯定是最好的选择.但是,反射也会起作用,你的代码几乎就在那里:

Object o = getFromSomeWhere.....;
Method m = o.getClass().getMethod("getDate");
Date date = (Date) m.invoke(o);
Run Code Online (Sandbox Code Playgroud)

(无可否认,你需要处理一些例外......)

完整的例子:

import java.lang.reflect.*;
import java.util.*;

public class Test
{
    public static void main(String[] args) throws Exception
    {
        Object o = new Test();
        Method m = o.getClass().getMethod("getDate");
        Date date = (Date) m.invoke(o);
        System.out.println(date);
    }

    public Date getDate()
    {
        return new Date();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Henrik:对于生产代码,我非常同意.但是在编写示例应用程序来演示特定代码时(实际上只有三行是相关的)我认为这很好.我在帖子中提到有一堆例外要处理.在测试应用程序中明确地拼出这些内容真的有用吗?混乱程序实际上会让任何事情更清楚吗?好处在哪里? (4认同)