Что вы подразумеваете под «вернуть статический метод»? На мой взгляд, нормально вызывать статический метод из метода экземпляра - в зависимости от обстоятельств, конечно. Не могли бы вы опубликовать код, на который жалуется Netbeans?
Одна вещь, которую я мог бы представить, - это если вы используете только статические методы из метода экземпляра, без использования каких-либо данных экземпляра. Иногда это то, что требуется для реализации интерфейса или переопределения метода из базового класса, но если вы ничего не переопределяете и не используете переменные экземпляра, было бы неплохо сделать метод статическим, чтобы показать, что он действительно не зависит от конкретного случая.
РЕДАКТИРОВАТЬ: С отредактированным вопросом это имеет большой смысл. ИМО - это недостаток Java, который позволяет это в первую очередь. Это может сделать для очень вводящего в заблуждение кода. Мой любимый пример (который означает, что старожилы, возможно, уже видели, как я публиковал его раньше :), это с Thread.sleep
. Что это выглядит как этот код?
Thread t = new Thread(someRunnable);
t.start();
t.sleep(1000);
На мой взгляд, похоже, что новую ветку просят перевести в спящий режим - похоже на вызов suspend
. Но нет - вы можете только попросить текущий выполняющийся поток перевести в спящий режим, поэтому Thread.sleep
является статическим методом. Приведенный выше код является допустимой Java и заставит текущий выполняющийся поток спать в течение секунды, пока вновь созданный поток (вероятно) работает ... совсем не так, как выглядит код на первый взгляд.