gpt4 book ai didi

java - 标准做法是在该类中创建该类的实例吗?

转载 作者:行者123 更新时间:2023-12-02 09:27:06 25 4
gpt4 key购买 nike

我在 Foo 类中遇到了一些代码,其方法 doSomething() 创建了 foo 类的实例。

public class Foo {
public void doSomething() {
Foo foo1 = new Foo();
}
}

这是标准做法吗?这似乎是一种非常奇怪的处理方式。你为什么要做这样的事情。以这种方式创建代码有危险吗?您是否有理由想要这样做而不是使用其他练习?最后,我的直觉是任何执行此类操作的方法都应该声明为静态。这是正确的吗?

最佳答案

是的,这是标准做法。它不是常见(在实例方法中,在静态中更常见),但它是完全标准的。

Foo 中的代码在很大程度上是无关紧要的:如果代码由于某种原因需要 this 以外的 Foo 实例,那么它是完美的正常创建实例并使用它。

这并不比创建不同类的两个实例的方法更奇怪:

class Foo {
void method() {
Bar b1 = new Bar();
Bar b2 = new Bar();
// ...
}
}

据推测,method 需要两个 Bar 实例。同样,doSomething 显然需要一个 Foo 而不是 this

您特别看到的一个地方是具有流畅接口(interface)的不可变对象(immutable对象),其中大多数方法都会返回某些方面发生更改的对象实例。

public class Thingy {
private int a;
private int b;

public Thingy(a, b) {
this.a = a;
this.b = b;
}

public Thingy withA(int newA) {
return new Thingy(newA, this.b);
}

public Thingy withB(int newB) {
return new Thingy(this.a, newB);
}

public int getA() {
return this.a;
}

public int getB() {
return this.b;
}

// ...
}

通常 withX 方法比这更有趣,但你明白了... String 就是一个例子,如 5tingr4y指出:toUpperCasesubstring、...

关于java - 标准做法是在该类中创建该类的实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43395551/

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