Вызов статического метода для класса?

Обновление до последней версии Bitvise SSH Client помогло мне решить эту проблему.

(с версии 7.39 до 7.45)

13
задан jjnguy 2 June 2009 в 23:48
поделиться

4 ответа

Статический метод по определению вызывается для class, а не на экземпляре этого класса.

Таким образом, если вы используете:

SomeClass.someStaticMethod()

, вы ничего не создаете (оставьте в стороне загрузку класса и создание самого класса SomeClass , который обрабатывает JVM и выходит за рамки вашей области).

Это противоположно обычному методу, вызываемому для объекта, который уже был создан:

SomeObject o = someObject; // had to be instantiated *somewhere*
o.someMethod();
24
ответ дан 1 December 2019 в 17:16
поделиться

Поскольку вы говорите об объекте Class, я предполагаю, что вас интересует отражение в Java. Вот краткий фрагмент, который делает то, что вы пытаетесь сделать:

Class someClass = SomeType.class;
Method staticMethod = someClass.getMethod( "methodName", ... );

// pass the first arg as null to invoke a static method
staticMethod.invoke( null, ... );
12
ответ дан 1 December 2019 в 17:16
поделиться

Я не совсем уверен, какова ситуация, но если вы хотите выполнить статический метод в классе, не зная его типа (т.е. вы не знаете, что это SomeType, у вас есть только объект Class), если вы знаете имя и параметры метода, вы можете использовать отражение и сделать следующее:

Class c = getThisClassObjectFromSomewhere();

//myStaticMethod takes a Double and String as an argument
Method m = c.getMethod("myStaticMethod", Double.class, String.class);
Object result = m.invoke(null, 1.5, "foo");
34
ответ дан 1 December 2019 в 17:16
поделиться

Да. Вот что такое статические методы. Просто позвони.

-1
ответ дан 1 December 2019 в 17:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: