-1

Register というメソッドがあります。どのクラス オブジェクトがこのメソッドに送信されるかを調べる必要があります。私のコードは次のとおりで、コンパイルされません。

エラーはシンボルが見つかりません

記号:クラスT

  • UserTypeA と UserTypeB の 2 種類のクラスがあることに注意してください。

コード

   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());

   }

ジャヤモハンが彼の答えで示唆したように、私は次のことを試しましたが、getName メソッドにアクセスできません。

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

2 に答える 2

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
    }
}
于 2013-02-27T01:11:42.567 に答える
-1

andクラスではなく、単一User の classだけが必要だと思います。次に、そのクラスから2 つのオブジェクトを作成できます。次に、コードを次のように変更するだけです。UserAUserBUser

   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クラス自体も別のファイルに作成する必要があります。あなたの要件が何であるかわかりません。そのため、この部分で何をする必要があるかについて提案することはできません.

于 2013-02-27T01:07:14.217 に答える