2013-02-27 62 views
-1

我有一個名爲註冊的方法,我需要找出哪一個類的對象是發送到這個方法,我的代碼如下,不編譯如何確定將哪個類發送到該方法?

錯誤是無法找到符號

符號:類牛逼

  • 請注意,我有兩個類型類UserTypeA和UserTypeB

代碼

public class UserTypeA { 
     private int SSN; 
     private int Name; 
     .... Getter and setters go here.... 
    } 

    public class UserTypeB { 
     private int Name; 
     ... Getter and setters go here .... 
    } 


    public void mymethod(){ 

    UserTypeA usera = new UserTypeA(); 
    usera.setName("Jack"); 
    register(usera); 

    UserTypeB userb = new UserTypeB(); 
    userb.setName("Daniel"); 
    register(userb); 
    } 



    public void register(Class<T> type){ 

     type.registerUser(type.getName()); 

    } 

由於Jayamohan在他的回答中提示自爆,我嘗試了以下方法,但它無法訪問getName方法。

public void register(Object obj) throws ClassNotFoundException { 
    if(obj instanceof UserTypeA) 
    { 
     System.out.println(obj.getName()); 
    } 
+0

這段代碼編譯,甚至? 'UserA'和'UserB'的定義是什麼? – 2013-02-27 01:03:59

+0

找出哪一類以什麼方式?其名稱? – 2013-02-27 01:04:44

+0

'instanceof'可能是你的朋友在這裏 – 2013-02-27 01:04:48

回答

-1

我懷疑你只需要一個User,而不是UserAUserB類。然後,您可以創建兩個來自該類的User對象。然後,您可以簡單地將您的代碼更改爲以下內容:

public void mymethod(){ 

    User jack = new User(); 
    jack.setName("Jack"); 
    register(jack); 

    User dan = new User(); 
    dan.setName("Dan"); 
    register(dan); 
    } 

    public void register(User newUser){ 

     // Do something here to register the newUser 

    } 

請注意,該代碼仍然不會自行編譯。您還需要在單獨的文件中創建User類本身。我不知道你的要求是什麼,所以我不能就這部分你需要做什麼提出任何建議。

+0

感謝您的回覆,但請注意我有兩個類,UserA和UserB – 2013-02-27 01:08:00

+0

@DanielMorgan請編輯您的原始問題以包含這兩個類的代碼。 – 2013-02-27 01:10:44

1

更改您的註冊方法使用instanceof關鍵字如下

public void register(Object obj) { 
    if (obj instanceof UserA) { 
     // Do something related to UserA 
    } else if (obj instanceof UserB) { 
     // Do something related to UserB 
    } 
} 
+0

我用它,但是當我嘗試訪問任何objs的getName()方法時,它不接受它。 – 2013-02-27 01:15:16

+0

Try obj.getClass()。getName(); – Jayamohan 2013-02-27 01:16:29

+0

那該怎麼辦?我已經更新了問題 – 2013-02-27 01:17:53

相關問題