gpt4 book ai didi

java - 我应该将类设为静态吗?

转载 作者:行者123 更新时间:2023-12-02 11:23:57 28 4
gpt4 key购买 nike

我有以下类(class):

class A
{
private String state;

A() { state = staticGetterCall(); } // staticGetterCall is fast

bool shouldUseState() { return state != null; }

bool getState() { return state; }
}

然后我用 class A在其他构造函数中按以下方式:

B(...) {
...
A a = new A();
if (a.shouldUseState())
{
staticFunction2Call(a.getState());
}
}

这是我唯一使用的地方A ,所以我认为重构它并使这两个方法静态(并内联 String state )是个好主意:

class A
{
bool shouldUseState() { return staticGetterCall != null; }

bool getState() { return staticGetterCall; }
}

所以它的用法转变为:

B(...) {
...
if (A.shouldUseState())
{
staticFunction2Call(A.getState());
}
}

有意义吗?

最佳答案

Should I make a class static?

要回答您的问题,您需要了解这种用法​​的优点和缺点。

根据Joshua Bloch , Effective Java 2Edition第 1 项,让我列出他对静态使用相对于构造函数的优缺点的观点。这样您就可以有效地决定您的计划。

优点:
1. 静态工厂方法的一个优点是,与构造函数不同,它们有名称。

2. 静态工厂方法的第二个优点是,与构造函数不同,它们不需要在每次调用时创建一个新对象。

3. 静态工厂方法的第三个优点是,与构造函数不同,它们可以返回其返回类型的任何子类型的对象。

4. 静态工厂方法的第四个优点是它们减少了创建参数化类型实例的冗长性。

缺点
1. 仅提供静态工厂方法的主要缺点是没有公共(public)或 protected 构造函数的类不能被子类化。

2. 静态工厂方法的第二个缺点是它们与其他静态方法不容易区分。

简而言之,静态工厂方法和公共(public)构造函数都有其用途,了解它们的相对优点是值得的。通常静态工厂更可取,因此避免在不首先考虑静态工厂的情况下反射性地提供公共(public)构造函数。

关于java - 我应该将类设为静态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49729176/

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