gpt4 book ai didi

java - 抽象类中的静态方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:54:52 25 4
gpt4 key购买 nike

我想像这样定义一个抽象方法:

public abstract class Saveable {
public Set<Field> getFieldSet();
...
}

getFields() 应始终返回相同的输出,而不管对象的状态如何。但是,我不能将其声明为静态方法,因为我希望它被覆盖。现在我正在实现一个扩展 Saveable 的类 User 并且它有一些需要字段集的静态方法。显然,我无法获得它,因为我没有对象。关于允许我在静态方法中获取字段的设计有什么想法吗?

最佳答案

一种方法是通过将正确对象的实例传递给静态方法,然后在该对象上调用 getFields 来“伪造”this 引用。

另一种选择是将字段列表存储在类的静态字段中。您覆盖的 getFields() 实现可以返回它(或者最好是它的副本),并且您的静态方法可以直接访问它。

我的偏好是实现后一个选项,因为它不那么笨拙(因为你永远不必新建一个无用的对象来传递给静态方法。)同样,它捕获了类的想法字段不依赖于给定的实例。

关于java - 抽象类中的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6550627/

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