gpt4 book ai didi

java - 从其他类访问java中的final字段的正确方法

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

从其他类访问最终字段的好方法是什么?为什么。

A) 通过将其设为私有(private)并在 getter 和 setter 方法中提供功能,将其与其他类隔离

public class Game extends JPanel {
private final Racquet racquet;

public Game() {
racquet = new Racquet(this);
}
}

public class Ball {
private Game game;

Ball(final Game game) {
this.game = game;
}

void move(int speed) {
if (collision()) {
y = game.getRacquet().getTopY() - DIAMETER;
}
}
}

public class Racquet {
final Game game;

public Racquet(final Game game) {
this.game = game;
}

public int getTopY() {
return Y;
}
}

B) 保持默认并直接使用variable.methodname。

public class Game extends JPanel {
final Racquet racquet;
}

public class Ball {

void move(int speed) {
if (collision()) {
y = game.racquet.getTopY() - DIAMETER;
}
}
}

public class Racquet {
final Game game;

public Racquet(final Game game) {
this.game = game;
}

public int getTopY() {
return Y;
}
}

访问最终字段是否会直接提高性能?

最佳答案

与其使用 getter 来移动 Racket ,不如有一个方法在内部为您完成此操作。

void move(int speed) {
if (collision()) {
racket.move(diameter)
}
}
//inside racket
public int move(int diameter){
return this.Y - diameter;
}

或者,如果您愿意,可以将移动拆分为 moveUpmoveDown 等,并在传递直径后返回计算值。这取决于很多因素,例如球的位置。您可以检查球的位置并决定调用哪个方法并移动 Racket 。

最好现实地考虑一下。

您可以有一个 Player 类:

  • 负责确定球的位置。
  • 移动 Racket

实际上,您的 Racket 不会知道在哪里,或者不会知道您使用 Racket 击中它,玩家知道它。

如果你想遵循 OOP 准则,那么不要直接访问变量(即公共(public)变量),而是让方法为你完成工作,并给你结果,这是 Tell, Don't Ask 的方法。 。如果需要,请保留 setter/getter 以供显示之用。

关于java - 从其他类访问java中的final字段的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868292/

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