从给定的INSTANCE动态创建扩展的匿名类(在运行时覆盖实例中的方法)

时间:2012-06-01 15:58:02

标签: java class inheritance instance anonymous

有没有办法动态创建另一个扩展的匿名实例? 会是这样的,我认为这会很棒。

File myFile = new File("notes.txt");

new FileWrapper extends myFile(){ //instance!!!
   @Override public boolean equals(File in){ return false;}
};

这就像复制对象实例并在特定方法中重写逻辑一样 如果不是最好的方法来实现它?

注意:我知道如果myFile是一个类名而不是实例,那么该示例是有效的,但是我应该做一些事情来保存实例变量和内部信息。

1 个答案:

答案 0 :(得分:1)

不,Java中没有这样的功能。您将不得不依赖代理对象来转发对原始实例的调用,除了它想要“覆盖”的调用。

请注意,如果您希望代理对象具有与原始对象相同的类型,则需要使用接口,因为如果代理对象会扩展原始类型,您最终会得到两个实例(如果它是执行工作的包装对象,则不需要这样做。)

进一步阅读:

(是的,如果有很多委托方法,我同意它会变得一团糟......)