2013-03-22 1 views
1

В настоящее время я кодирую приложение Java, но я застрял.java.lang.NoSuchMethodException

package framework.messages.requests; 

import framework.sessions.Session; 

public class Handshake { 
     
    public static void CheckRevision(Session Session) { 
        try { 
            System.out.println("[" + Session.GetID() + "] --> " + Session.GetRequest().ReadUTF()); 
        } 
        catch (Exception ex) { 
             
        } 
    }   
} 

Является ли мой класс.

В main(String[] args) если я использую:

System.out.println(Handshake.class.getMethods()[0].getName()); 

Выход CheckRevision.

Но если я использую где-нибудь еще:

this.Packets[6428] = Handshake.class.getMethod("CheckRevision"); 

я получаю:

Exception in thread "main" java.lang.NoSuchMethodException: framework.messages.requests.Handshake.CheckRevision() 
    at java.lang.Class.getMethod(Unknown Source) 
    at framework.messages.MessageHandler.AddPackets(MessageHandler.java:18) 
    at framework.Framework.main(Framework.java:34) 

Почему я не получаю хороший метод?

+5

Вы будете иметь так много проблем, если вы продолжать использовать верхний регистр имен для переменных. –

+0

Почему у меня много проблем? – user2199080

+0

, поскольку он не соответствует стандартным соглашениям об именах java. – Kevin

ответ

9

Если вы указали метод getMethod только с именем метода, он предположит, что вы ищете метод без аргументов. Метод getMethod имеет аргумент varargs для классов параметров метода, который вы ищете.

Использование

Handshake.class.getMethod("CheckRevision", Session.class); 
+0

Спасибо. Это отлично поработало для меня. – user2199080