Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定将哪个类发送给该方法?_Java_Polymorphism - Fatal编程技术网

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

Java 如何确定将哪个类发送给该方法?,java,polymorphism,Java,Polymorphism,我有一个名为Register的方法,我需要找出哪个类对象被发送到这个方法,我的代码如下,它不编译 错误是找不到符号 符号:T类 请注意,我有两种类型的类UserTypeA和UserTypeB 代码 我怀疑您只需要一个User类,而不需要UserA和UserB类。然后可以从该类创建两个User对象。然后,您只需将代码更改为以下内容: public void mymethod(){ User jack = new User(); jack.setName("Jack"

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

错误是找不到符号

符号:T类

  • 请注意,我有两种类型的类UserTypeA和UserTypeB
代码


我怀疑您只需要一个
User
类,而不需要
UserA
UserB
类。然后可以从该类创建两个
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
类本身。我不知道您的要求是什么,所以我不能就您需要为这部分做什么给出任何建议。

更改您的注册方法以使用
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
    }
}

这段代码甚至可以编译吗?
UserA
UserB
的定义是什么?以什么方式找出哪个类?它的名字?
instanceof
可能是你的朋友here@DanielMorgan当您的代码无法编译时,我们需要这些错误来帮助您。我发布了一个带有猜测的答案,因为我认为您缺少了一些关于类如何工作的关键概念。您的问题与多态性无关,尽管您已经将其标记为多态性。如果你真的需要两个代码> UserTypeA < /代码>和<代码> UserTypeB < /Cord>类,你可以考虑为它们创建一个父类。这将允许您使用多态性,并使您的代码更加Java友好。感谢您的回答,但请注意我有两个类,UserA和UserB@DanielMorgan请编辑原始问题以包含这两个类的代码。我使用了它,但当我尝试访问getName()时方法,但它不接受它;您的查询是要找到要传递给register方法的对象的名称,对吗?实际上,我需要知道哪个类对象被发送到该方法并执行操作。@然后使用instanceof或获取该类的名称;有什么问题吗?还有,电子战;这与我在你之前的问题中所说的完全不同。
   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

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