Java - 在更多类中使用一个变量
Java - Using a variable in more clases
我必须变量 grid_size 和 grid_subsize 和 classes SudokuGrid、SudokuGame、SudokuSolver 和 SudokuGenerator.
变量首先在 SudokuGrid 中启动,之后我需要在剩下的 classes 中使用它们。目前,我在 classes 的构造函数中传递参数之类的变量。类似于:
public class Main extends Application {
public static void main (String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Sudoku");
int grid_size = 9;
int grid_subsize = 3;
SudokuGame sudokuGame = new SudokuGame(grid_size, grid_subsize);
}
}
public class SudokuGame {
public SudokuGame (int grid_size, int grid_subsize) {
SudokuGrid sudokuGrid = new SudokuGrid(grid_size, grid_subsize);
}
}
public class SudokuGrid {
private int grid_size;
private int grid_subsize;
public SudokuGrid (int grid_size, int grid_subsize) {
this.grid_size = grid_size;
this.grid_subsize = grid_subsize;
}
}
public class SudokuSolver {
private int grid_size;
private int grid_subsize;
public SudokuSolver (int grid_size, int grid_subsize) {
this.grid_size = grid_size;
this.grid_subsize = grid_subsize;
}
}
public class SudokuGenerator {
private int grid_size;
private int grid_subsize;
public SudokuGenerator(int grid_size, int grid_subsize) {
this.grid_size = grid_size;
this.grid_subsize = grid_subsize;
}
}
但看起来不太好。
我的第二个想法是像public静态变量一样使用它们,但是很多人说public静态变量是"EVIL"。
那么,在更多 class 中使用 one/more 变量的最佳方法是什么?
编辑: 在 SudokuGame class public 静态方法中创建 grid_size 和 grid_subsize(我不需要每次都创建一个新实例)。
你可以这样用,我看没问题。我没有看到此时使用静态变量有任何问题(我假设这些变量是常量),因为使用静态变量会使它成为所有 classes 中已知的全局变量,这就是你想要的这是静态的目的之一。由于 main 方法,人们大多称 static 为坏。在静态 main 方法中,您不能引用非静态方法,因此他们继续声明所有内容都是静态的。 static的意思是你不需要实例化一个Object来访问这个变量或方法。您始终可以通过调用 class 名称点变量或方法名称来访问它。
首先。请Post其他类.
其次,您必须为变量编写 getter 和 setter。
public int getGrid_size(){
return grid-size;
}
private int getGrid_subsize(){
return grid_subsizes;
}
是的,您不应该使用静态变量。但是,如果您愿意,您可以创建一个实用程序 Class,例如:
public class Utility{
public static SudokuGenerator generator;
}
您可以通过以下方式访问变量:
int x = Utility.generator.getGrid_Size();
像下面这样发起一个class
public class gridSizes{
public static int grid_size = 350;
public static int grid_subsize = 30;
}
然后您可以随时通过gridSizes.grid_size或gridSizes.grid_subsize
检索该值
我的思路如下
我相信 classes SudokuGrid、SudokuSolver 和 SudokuGenerator 都是相互依存的。
那么为什么不将 SudokuGame 定义为外部 Class 和 SudokuGrid、SudokuSolver 和 SudokuGenerator 作为嵌套的 Inner Classes ,定义
私人整数 grid_size;
私人整数 grid_subsize;
在 SudokuGame class 中,然后根据需要访问内部 classes 中的两个变量。
也可以创建嵌套静态classes,但是嵌套静态classes只能访问外层class.[=10=的静态内容]
希望对您有所帮助。
我会使用带有 public 静态 Getters 的私有静态变量。
您的变量对于所有对象必须始终具有相同的值...这就是设计静态变量的目的。
如果你想在其他 classes 中使用 grid_size 和 grid_subsize 你需要定义你的变量 public,但是你不能使用不同的对象来访问grid_subsize 和 grid_size 的相同值如果你不想使用静态变量那么这是我的解决方案
这是你的publicclass
public class Whosebug {
public Whosebug(){
SudokuGenerator a = new SudokuGenerator(1,2);
newclass b= new newclass(a);
}
public static void main(String[] args) {
new Whosebug();
}
}
初始化变量后,您可以简单地将对象传递给任何其他 classes,这样您就可以获取相同的数据。
class SudokuGenerator {
public int grid_size;
public int grid_subsize;
public SudokuGenerator(int grid_size, int grid_subsize) {
this.grid_size = grid_size;
this.grid_subsize = grid_subsize;
}
}
class newclass{
public newclass(SudokuGenerator a){
System.out.println("grid_size and grid_subsize in newclass " + a.grid_size + ", "+a.grid_subsize);
}
我必须变量 grid_size 和 grid_subsize 和 classes SudokuGrid、SudokuGame、SudokuSolver 和 SudokuGenerator.
变量首先在 SudokuGrid 中启动,之后我需要在剩下的 classes 中使用它们。目前,我在 classes 的构造函数中传递参数之类的变量。类似于:
public class Main extends Application {
public static void main (String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Sudoku");
int grid_size = 9;
int grid_subsize = 3;
SudokuGame sudokuGame = new SudokuGame(grid_size, grid_subsize);
}
}
public class SudokuGame {
public SudokuGame (int grid_size, int grid_subsize) {
SudokuGrid sudokuGrid = new SudokuGrid(grid_size, grid_subsize);
}
}
public class SudokuGrid {
private int grid_size;
private int grid_subsize;
public SudokuGrid (int grid_size, int grid_subsize) {
this.grid_size = grid_size;
this.grid_subsize = grid_subsize;
}
}
public class SudokuSolver {
private int grid_size;
private int grid_subsize;
public SudokuSolver (int grid_size, int grid_subsize) {
this.grid_size = grid_size;
this.grid_subsize = grid_subsize;
}
}
public class SudokuGenerator {
private int grid_size;
private int grid_subsize;
public SudokuGenerator(int grid_size, int grid_subsize) {
this.grid_size = grid_size;
this.grid_subsize = grid_subsize;
}
}
但看起来不太好。
我的第二个想法是像public静态变量一样使用它们,但是很多人说public静态变量是"EVIL"。
那么,在更多 class 中使用 one/more 变量的最佳方法是什么?
编辑: 在 SudokuGame class public 静态方法中创建 grid_size 和 grid_subsize(我不需要每次都创建一个新实例)。
你可以这样用,我看没问题。我没有看到此时使用静态变量有任何问题(我假设这些变量是常量),因为使用静态变量会使它成为所有 classes 中已知的全局变量,这就是你想要的这是静态的目的之一。由于 main 方法,人们大多称 static 为坏。在静态 main 方法中,您不能引用非静态方法,因此他们继续声明所有内容都是静态的。 static的意思是你不需要实例化一个Object来访问这个变量或方法。您始终可以通过调用 class 名称点变量或方法名称来访问它。
首先。请Post其他类.
其次,您必须为变量编写 getter 和 setter。
public int getGrid_size(){
return grid-size;
}
private int getGrid_subsize(){
return grid_subsizes;
}
是的,您不应该使用静态变量。但是,如果您愿意,您可以创建一个实用程序 Class,例如:
public class Utility{
public static SudokuGenerator generator;
}
您可以通过以下方式访问变量:
int x = Utility.generator.getGrid_Size();
像下面这样发起一个class
public class gridSizes{
public static int grid_size = 350;
public static int grid_subsize = 30;
}
然后您可以随时通过gridSizes.grid_size或gridSizes.grid_subsize
检索该值我的思路如下
我相信 classes SudokuGrid、SudokuSolver 和 SudokuGenerator 都是相互依存的。
那么为什么不将 SudokuGame 定义为外部 Class 和 SudokuGrid、SudokuSolver 和 SudokuGenerator 作为嵌套的 Inner Classes ,定义 私人整数 grid_size; 私人整数 grid_subsize; 在 SudokuGame class 中,然后根据需要访问内部 classes 中的两个变量。
也可以创建嵌套静态classes,但是嵌套静态classes只能访问外层class.[=10=的静态内容]
希望对您有所帮助。
我会使用带有 public 静态 Getters 的私有静态变量。
您的变量对于所有对象必须始终具有相同的值...这就是设计静态变量的目的。
如果你想在其他 classes 中使用 grid_size 和 grid_subsize 你需要定义你的变量 public,但是你不能使用不同的对象来访问grid_subsize 和 grid_size 的相同值如果你不想使用静态变量那么这是我的解决方案
这是你的publicclass
public class Whosebug {
public Whosebug(){
SudokuGenerator a = new SudokuGenerator(1,2);
newclass b= new newclass(a);
}
public static void main(String[] args) {
new Whosebug();
}
}
初始化变量后,您可以简单地将对象传递给任何其他 classes,这样您就可以获取相同的数据。
class SudokuGenerator {
public int grid_size;
public int grid_subsize;
public SudokuGenerator(int grid_size, int grid_subsize) {
this.grid_size = grid_size;
this.grid_subsize = grid_subsize;
}
}
class newclass{
public newclass(SudokuGenerator a){
System.out.println("grid_size and grid_subsize in newclass " + a.grid_size + ", "+a.grid_subsize);
}