Обновление до последней версии Bitvise SSH Client помогло мне решить эту проблему.
(с версии 7.39 до 7.45)
Статический метод по определению вызывается для class, а не на экземпляре этого класса.
Таким образом, если вы используете:
SomeClass.someStaticMethod()
, вы ничего не создаете (оставьте в стороне загрузку класса и создание самого класса SomeClass
, который обрабатывает JVM и выходит за рамки вашей области).
Это противоположно обычному методу, вызываемому для объекта, который уже был создан:
SomeObject o = someObject; // had to be instantiated *somewhere*
o.someMethod();
Поскольку вы говорите об объекте 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, ... );
Я не совсем уверен, какова ситуация, но если вы хотите выполнить статический метод в классе, не зная его типа (т.е. вы не знаете, что это 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");
Да. Вот что такое статические методы. Просто позвони.