【发布时间】:2017-12-27 17:52:55
【问题描述】:
我有一个无法访问其源代码的类。
public class IDontHaveAccessToSource {...}
我想给它添加一些方法,像这样:
public class MyClass extends IDontHaveAccessToSource {
myMethod1() {...}
myMethod2() {...}
@Override
methodInIDontHaveAccessToSource(){...}
}
但每当我想将任何返回 IDontHaveAccessToSource 的内容转换为 MyClass 时,它都会给我一个 ClassCastException。
我该怎么做?
我不想用
public class MyClass {
IDontHaveAccessToSource obj;
MyClass(IDontHaveAccessToSource obj) {
this.obj = obj;
}
...
}
并且没有任何可用于IDontHaveAccessToSource 的构造函数。它是通过调用另一个类的函数来“创建”的:
IDontHaveAccessToSource obj = loadObject(filename);
【问题讨论】:
-
你不能。至少没有魔法。
-
好吧。通过反射和代理,许多事情都成为可能。但仅适用于接口,除非我弄错了。
标签: java inheritance polymorphism