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)
| 归档时间: |
|
| 查看次数: |
10422 次 |
| 最近记录: |