Класс, который имеет только статические данные и методы для доступа к этим данным. Как правильно это реализовать? - PullRequest
1 голос
/ 19 октября 2010

Я знаю, что это вопрос новичка. Я новичок в Java, а также в программировании в целом.

Скажем, у меня есть класс, содержащий только статические данные, например:

class Foo {
private static int x;  }

Я хочу использовать класс без создания экземпляров какого-либо объекта. Поэтому я хочу иметь возможность:

Foo.setX(5);
Foo.getX();

Какой лучший способ реализовать этот класс, я немного запутался в интерфейсах и других вещах на данный момент.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 19 октября 2010

Почему бы вам просто не определить два статических метода, которые изменяют / возвращают статическое поле?

Статические методы в Java

3 голосов
/ 19 октября 2010

Я думаю, вам нужен Singleton:

Класс Singleton:

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);
2 голосов
/ 19 октября 2010

Вы можете просто определить 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();

Как и другие предлагали, Singleton - более чистый подход, хотя он не будет соответствовать вашему требованию не создавать экземпляры какого-либо объекта.

http://en.wikipedia.org/wiki/Singleton_pattern

0 голосов
/ 19 октября 2010

У вас всегда могут быть статические публичные методы Get и Set, чтобы делать то, что вы хотите. Но взгляните еще раз: шаблон Singleton может быть тем, что вы хотите.

...