我知道这是一个初学者的问题。我是 Java 新手,也是一般编程的新手。
假设我有一个只有静态数据的类,例如:
class Foo {
private static int x; }
我想在不实例化任何对象的情况下使用该类。所以我希望能够做到:
Foo.setX(5);
Foo.getX();
什么是实现这个类的最佳方法,我现在对接口和其他东西有点困惑。
谢谢。
我知道这是一个初学者的问题。我是 Java 新手,也是一般编程的新手。
假设我有一个只有静态数据的类,例如:
class Foo {
private static int x; }
我想在不实例化任何对象的情况下使用该类。所以我希望能够做到:
Foo.setX(5);
Foo.getX();
什么是实现这个类的最佳方法,我现在对接口和其他东西有点困惑。
谢谢。
我认为单身人士是您要寻找的:
单例类:
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private int x;
// Private constructor prevents instantiation from other classes
private Singleton() {
}
public static Singleton getInstance() {
return INSTANCE;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
并从代码中的任何位置访问:
int x = Singleton.getInstance().getX();
Singleton.getInstance().setX(10);
为什么不只定义两个修改/返回静态字段的静态方法?
您可以将getX
和setX
方法定义为静态:
class Foo
{
private static int x;
public static int getX()
{
return x;
}
public static void setX(int x)
{
Foo.x = x;
}
}
然后你可以在不实例化任何对象的情况下使用它:
Foo.setX(5);
int val = Foo.getX();
正如其他人所建议的那样, aSingleton
是一种更清洁的方法,尽管它不能满足您不实例化任何对象的要求。
您始终可以使用静态公共方法 Get 和 Set 来做您想做的事情。但是再看看,单例模式可能就是你想要的。