1

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

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

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

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

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

4

1 回答 1

1

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

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

进一步阅读:

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

于 2012-06-01T16:01:40.207 回答