【发布时间】:2016-04-16 05:52:14
【问题描述】:
我有一个名为 X 的类,它实现了多个(例如 3 个)接口,分别称为 A、B 和 C。
我创建了另一个接口 AB 来扩展接口 A 和 B。
如何使用反射来创建可分配给接口 AB 的 X 实例?
我不断收到使用此代码的 ClassCast 异常:
package test.messages;
public interface A
{
void methodA();
}
package test.messages;
public interface B
{
void methodB();
}
package test.messages;
public interface C
{
void methodC();
}
package test.messages;
public interface AB extends A, B
{
}
package test.messages;
public class X implements A, B, C
{
@Override
public void methodC()
{
System.out.println("C");
}
@Override
public void methodB()
{
System.out.println("B");
}
@Override
public void methodA()
{
System.out.println("A");
}
}
然后在一个完全不同的类:
AB api = (AB)Class.forName("test.messages.X").newInstance();
System.out.println(api);
现在,当我尝试只使用一个接口时,比如 A,它可以正常工作。
有没有办法让它与组合接口 AB 一起工作?
【问题讨论】:
-
您似乎正试图从一个未实现
AB的类中获取AB的实例。 -
你不能,虽然你可以使用 JDK 代理。
标签: java reflection interface