Java и main () - PullRequest
       22

Java и main ()

2 голосов
/ 14 февраля 2012

Я возиться с Eclipse (и java в целом) впервые примерно за год.среди вещей, которые я забыл, есть следующее:

У меня есть функция (void callvote (), которая, я надеюсь, будет активирована моей основной функцией (то есть автоматически, относительно рано в программе). Iв настоящее время он находится в том же классе (теле), что и сама основная функция.
Я пытаюсь вызвать его с помощью callvote(); и получаю сообщение об ошибке "- Невозможно сделать статическую ссылку на нестатический метод callvote () изтело типа «моя функция callvote» в данный момент находится в пространстве ниже main и просто говорит:

public void callvote() { } совершаю ли я ужасный грех, помещая больше функций в один класс с main?Относительно легко исправить, что я как-то пропустил? Что означает эта ошибка? Я разбудил Azatoth с этим кодом? Заранее спасибо, Tormos

Ответы [ 3 ]

1 голос
/ 14 февраля 2012

Без модификатора static callvote неявно является методом экземпляра - вам нужен экземпляр класса для его вызова.

Вы также можете пометить его как статический:

public static void callvote() ...

Или создайте экземпляр декларирующего класса:

MyClass instance = new MyClass();
instance.callvote();
1 голос
/ 14 февраля 2012

main () - это статический метод, то есть вы можете вызывать его напрямую из класса, тогда как нестатические члены можно вызывать только из объекта. Чтобы вы могли вызвать метод callvote (), вам нужно сначала создать экземпляр объекта вашего класса:

public static void main(String [ ] args) {
    MyClass myObject = new MyClass();
    myObject.callvote();
}

Еще один способ избежать этой ошибки - сделать метод callvote () также статичным, но обычно это не то, что вы хотите сделать (но это зависит от природы вашего класса и метода).

В этом посте описаны некоторые опасности, связанные с чрезмерным использованием статических методов: Класс с одним методом - лучший подход?

0 голосов
/ 14 февраля 2012

Попробуйте:

public class Main {
    public static void main(String[] args) {
        new Main().callvote()       
    }   
}

main() точка входа вашей Java-программы является статической.Вы не можете вызывать нестатический метод из статического.

Поэтому вы должны сначала создать экземпляр класса, а затем вызвать метод.

...