我是反射新手。我看过一些问题和教程。
假设我有一个接口,由 3 个接口实现A、B、C 类
public interface MyInterface {
doJob();
}
现在使用反射我想调用每个类
Class<?> processor = Class.forName("com.foo.A");
Object myclass = processor.newInstance();
我不能将整个过程限制为特定类型,而不是创建一个对象吗?
我只想调用我的界面类型类。
如果我传递 com.foo.A 它应该创建 A 类对象,com.foo.B 应该创建 B 类对象,但是如果我传递一些存在但仍然没有实现 MyInterface 的 com.foo.D 则不应该被调用。
我怎样才能实现这个目标?
try
MyInterface newInstance(String className) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Class<?> cls = Class.forName(className);
if (!MyInterface.class.isAssignableFrom(cls)) {
throw new IllegalArgumentException();
}
return (MyInterface) cls.newInstance();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)