gpt4 book ai didi

java - 我可以从构建器那里获得匿名类吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:29:27 25 4
gpt4 key购买 nike

我知道我可以像这样手动创建匿名类的实例:

ClassName c = new ClassName() {
public void overridenMethod() { method body }
}

但是,有些类使用构建器模式来创建新实例。我的问题是是否有一个技巧可以让我使用其父类(super class)提供的构建器创建一个匿名类。

最佳答案

不,或者至少不是直接的:在 Java 中你不能继承一个实例;你需要从一个类继承。

但是,您可以构建一个匿名类包装从构建器返回的实例。您可以根据需要在包装实例上调用方法,同时覆盖您需要覆盖的方法。

final ClassName wrapped = builder.buildClassName();
ClassName c = new ClassName() {
public void passedThroughMethod1() { wrapped.passedThroughMethod1() }
public void overridenMethod() { method body }
public void passedThroughMethod2() { wrapped.passedThroughMethod2() }
};

此时,c 的行为就像wrapped 实例,除了overridenMethod。一个不幸的后果是您无法访问 wrapped 的 protected 成员。

关于java - 我可以从构建器那里获得匿名类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13089221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com