2013-03-22 35 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

你將有這麼多的問題,如果你繼續使用大寫字母命名變量。 – 2013-03-22 16:42:33

+0

爲什麼我會遇到很多問題? – user2199080 2013-03-22 16:43:50

+0

,因爲它不遵循標準的java命名約定。 – Kevin 2013-03-22 16:44:41

回答

9

如果您只提供方法名稱的getMethod方法,那麼它會假定您正在尋找一個無參數方法。 getMethod方法爲您正在查找的方法的參數類提供varargs參數。

使用

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

謝謝。它對我很好。 – user2199080 2013-03-22 16:47:48

相關問題