Почему вы не можете объявить класс статическим в Java? - PullRequest
443 голосов
/ 27 августа 2010

Почему вы не можете объявить класс статическим в Java?

Ответы [ 14 ]

2 голосов
/ 02 августа 2013

Единственными классами, которые могут быть статическими, являются внутренние классы. Следующий код работает просто отлично:

public class whatever {
    static class innerclass {
    }
}

Смысл статических внутренних классов в том, что они не имеют ссылки на внешний объект класса.

1 голос
/ 28 ноября 2012

Можно взглянуть на PlatformUI в Eclipse для класса со статическими методами и приватным конструктором, сам с собой являющимся окончательным.

public final class <class name>
{
   //static constants
   //static memebers
}
1 голос
/ 17 мая 2012

Я думаю, что это возможно так же просто, как выпить стакан кофе !.Просто взгляните на это.Мы не используем ключевое слово static явно при определении класса.

public class StaticClass {

    static private int me = 3;
    public static void printHelloWorld() {
       System.out.println("Hello World");
    }



    public static void main(String[] args) {
        StaticClass.printHelloWorld();
        System.out.println(StaticClass.me);
    }
}

Разве это не определение статического класса?Мы просто используем функцию, связанную только с классом.Будьте осторожны, чтобы в этом случае мы могли использовать другой класс из этого вложенного.Посмотрите на это:

class StaticClass1 {

    public static int yum = 4;

    static void  printHowAreYou() {
        System.out.println("How are you?");
    }
}

public class StaticClass {

    static int me = 3; 
    public static void printHelloWorld() {
       System.out.println("Hello World");
       StaticClass1.printHowAreYou();
       System.out.println(StaticClass1.yum);
    }



    public static void main(String[] args) {
        StaticClass.printHelloWorld();
        System.out.println(StaticClass.me);
    }
}
0 голосов
/ 31 января 2013

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

...