2015-11-20 59 views
4

我正在NetBeans的swing應用程序工作。我創建了一個父類和一個子類。每當我通過子類調用父類的任何屬性時,我都會遇到錯誤。如何解決這個問題:如何解決沒有這樣的方法錯誤

這是父類:

public abstract class WorkRequest { 

private String name; 
public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
}} 

這是子類:

public class DoctorTestWorkRequest extends WorkRequest { 

private String message; 

public String getMessage() { 
    return message; 
} 

public void setMessage(String message) { 
    this.message = message; 
} 

我打電話子類在面板:

DoctorTestWorkRequest request = new DoctorTestWorkRequest(); 
    request.setName(name); 
    request.setMessage(message); 

我我得到一個例外:

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: Business.WorkQueue.DoctorTestWorkRequest.setName(Ljava/lang/String;)V 
at UserInterface.ReceptionistRole.DoctorTestWorkRequestJPanel.requestTestJButtonActionPerformed(DoctorTestWorkRequestJPanel.java:147) 

如何解決這個問題。在此先感謝

+3

也許你的類路徑中有一個老版本的類。清理項目並重新編譯 – Jens

+0

執行此行時出現以下錯誤: SmartHealthCareSystem \ nbproject \ build-impl.xml:263:編譯失敗;詳細信息請參閱編譯器錯誤輸出。 –

+0

什麼是編譯器輸出?你能否提一提你的問題? – Arc676

回答

-3

創建WorkRequest的一個實例,然後把它初始化爲DoctorTestWorkRequest

WorkRequest request = new DoctorTestWorkRequest;

這應該工作

+0

這會比DoctorTestWorkRequest request = new DoctorTestWorkRequest()更好嗎?(從代碼的角度來看,不是談論設計)? – Thomas

+0

但是通過這樣做,我將無法訪問子類中的消息屬性。 –

+0

'新的DoctorTestWorkRequest;'不是合法的Java。 – Jubobs

1

問題可能是在IDE緩存,所以一定要解決這個問題在WorkRequest類重命名爲WorkRequestNew並在

public class DoctorTestWorkRequest extends WorkRequestNew

使用新名稱

希望這會有所幫助。

+0

是的,工作。非常感謝。爲什麼發生?你能解釋我嗎? –

+0

是的,這個問題是在內部類通信,你的.class必須是Business $ WorkQueue $ DoctorTestWorkRequest $ WorkRequest.class(你可以看到她的NetBeans問題:https://netbeans.org/bugzilla/show_bug.cgi?id = 247819) – kayosoufiane

相關問題