我试图对我的代码进行反思,但是遇到一个问题,因为我不得不用反射的类扩展类,就像这样:
我反映了这些课程:
"some.package.a.SomeClass"
"some.package.b.SomeClass"
现在我需要用其中一个扩展另一个类
public MyClass extends SomeClass {
@Override
public Object...
有什么办法可以做到这一点?
答案 0 :(得分:0)
如果您的MyClass
位于软件包some.package.a
中,则您要扩展some.package.a.SomeClass
,要扩展另一个类,您需要导入它
import some.package.b.SomeClass;
如果您的MyClass
位于软件包some.package.b
中,那么您将扩展some.package.b.SomeClass
来扩展另一个类,则需要导入它
import some.package.a.SomeClass;
如果您的MyClass
不在软件包some.package.b
中,则必须导入要扩展的类import some.package.b.SomeClass;
或import some.package.a.SomeClass;
答案 1 :(得分:0)
使用现成的Java,您不能仅通过反射来扩展给您的类。有第三方库可让您克服此限制(see this Q&A)。
扩展一个类需要定义一个新类,并将其编译为字节码。反射在运行时发生。它本质上是一个只读API,因此您不能使用它发出新的类。
实现接口为您提供了另一种使用Proxy
的选择,但是您不能指定自己的基类。