项目中引用了一个Jar包,里面有这么一个内部类(总之就是没有访问控制权限的类)
/* package */ InnerClass {
private Object cache = 0;
public Object getObj() {
if(cache == null) {
Object obj = createObj();
cache = obj;
}
return cache;
}
protected Object createObj() {
throw new RuntimeExeption("子类必须继承");
}
}
这个类我没有办法直接访问,只能通过反射来访问,但是又必须要继承并复写他的createObj方法才可以,要如何才能实现这个需求呢?
继承是编译期间做的事情,反射不能实现。你只有反编译修改代码再编译了。或者动态生成代码动态编译,再加载。
这个InnerClass
类不是package
级别的吗,那么这个类只能被本包的其他类访问,那你看下它在哪个包里面,你创建它的子类的时候直接自己创建一个跟它一模一样名字的包就好了。
比如它是org.apache.xxx.InnerClass
,那么你就在你的代码里面创建一个org.apache.xxx
的包,把想写的子类放在这个包里就好了。
你这想法有点异想天开,反射来的类无法继承