如何确定将哪个类发送给该方法?

时间:2013-02-27 01:02:39

标签: java polymorphism

我有一个名为Register的方法,我需要找出哪个类对象发送到这个方法,我的代码如下,不编译

错误是找不到符号

符号:T类

  • 请注意我有两种类型的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());
    }

2 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:-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类。我不知道你的要求是什么,所以我不能就你需要做什么提出任何建议。