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