Почему вызов статического метода в качестве экземпляра не является ошибкой для компилятора Java? - PullRequest
75 голосов
/ 04 марта 2009

Я уверен, что вы все знаете, какое поведение я имею в виду - такой код:

Thread thread = new Thread();
int activeCount = thread.activeCount();

вызывает предупреждение компилятора. Почему это не ошибка?

EDIT:

Чтобы было ясно: вопрос не имеет ничего общего с потоками. Я понимаю, что при обсуждении этого часто приводятся примеры из-за того, что с ними действительно можно что-то испортить. Но на самом деле проблема в том, что такое использование всегда бессмыслица, и вы не можете (компетентно) написать такой вызов и подразумевать его. Любой пример этого типа вызова метода был бы ужасным. Вот еще один:

String hello = "hello";
String number123AsString = hello.valueOf(123);

Что выглядит так, как будто каждый экземпляр String поставляется с методом "String valueOf (int i)".

Ответы [ 11 ]

0 голосов
/ 04 марта 2009

Там нет варианта для этого. В Java (как и многие другие языки) вы можете получить доступ ко всем статическим членам класса через имя класса или объект экземпляра этого класса. Это будет зависеть от вас, вашего дела и программного решения, которое вы должны использовать, чтобы повысить удобочитаемость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...