Я пытаюсь сослаться на метод в другом классе и использовать его в операторе return в моем другом классе. На данный момент все, что я получаю, это следующая ошибка: на нестатический метод getBalance нельзя ссылаться из статического контекста. Любая помощь будет принята с благодарностью

 public void bob()
   {
     return "Accountno.:" + super.toString() + Account.getBalance();
   }
1
robert 11 Фев 2011 в 23:33
Не могли бы вы показать структуры классов двух классов, которые вы описываете.
 – 
MindBrain
27 Апр 2013 в 01:53

4 ответа

getBalance — это метод экземпляра. Смысл метода в том, что он дает вам баланс для определенного объекта Account, поэтому вам нужен экземпляр Account, чтобы вызвать для него getBalance. Когда вы вызываете метод с предисловием имени класса, это то, что подразумевается под «статическим контекстом», это означает, что вы вызываете статический метод для класса.

Технически вызов конструктора и вызов метода getBalance для нового объекта, как показано в других сообщениях, будет работать, но не даст вам никаких полезных данных. Вам нужно выяснить, как получить желаемую учетную запись (например, с помощью запроса к базе данных).

Вы пытаетесь создать подкласс Account? Потому что метод bob очень похож на toString, который отлично смотрелся бы в Account. Если вы создаете подкласс учетной записи, вам не нужно предварять вызов getBalance Account., вместо этого вы можете использовать this.getBalance() или просто getBalance (потому что this подразумевается ).

4
Nathan Hughes 11 Фев 2011 в 23:43
Дополнение: если вы находитесь во внутреннем классе Account (где простой this не работает), вы можете написать Account.this.getBalance().
 – 
Paŭlo Ebermann
12 Фев 2011 в 01:25

У вас должен быть экземпляр объекта для вызова getBalance(). Вы звоните как статический метод. Это должно работать:

Account acc = new Account();
acc.getBalance();
2
Murilo Vasconcelos 11 Фев 2011 в 23:38

Правильный способ сделать это - иметь экземпляр Account , account и call

Account account = new Account();
account.getBalance(); 

Или объявите метод getBalance статическим.

0
Kasturi 11 Фев 2011 в 23:38

Вы пытаетесь вызвать нестатический метод, как если бы он был статическим. Предполагая, что у вас есть учетная запись класса, Account.getBalance() будет работать только для статического метода getBalance(). Вам нужен экземпляр Account для вызова нестатического метода getBalance().

0
Isaac Truett 11 Фев 2011 в 23:39