1

我正在将信息从 2 个 Java 类发送到另一个 Java 类,但我想创建一个 if/else 情况,如果它来自 1 个类,则输入 if,如果它来自另一个,则输入 else。

老实说,我当然不知道如何做到这一点,所以我什至无法启动它......

我在这两种情况下发送的是:

save.setCode(rtx);
4

5 回答 5

3

运算符的使用instanceOf

if (myobject instanceof Class1) {
    // then do your logic here
}

if (myobject instanceof Class2) {
    // then do your logic here
}

根据java文档

instanceof 运算符将对象与指定类型进行比较。您可以使用它来测试对象是类的实例、子类的实例还是实现特定接口的类的实例。

于 2013-09-01T11:02:11.133 回答
1

如果您要发送一个对象实例,那么您可以使用instanceof运算符来检查该对象是否属于特定类 -

if (myobject instanceof MyClass1) {
    // then do your thing
}
else if (myobject instanceof MyClass2) {
    // then do your thing
}

但强烈建议不要这样做。使用多态来实现这种行为。

于 2013-09-01T11:01:16.523 回答
0

如果我做对了,那么您要做的就是根据谁是您班级的呼叫者而不是传递的信息做出一些决定。

为此,您需要:

  1. 在参数列表中发送一些额外信息。
  2. 如果您希望这真的是动态的(尽管我强烈建议不要使用这种方法),唯一的选择是查看堆栈跟踪(通过Thread.currentThread().getStackTrace())。
于 2013-09-01T11:14:00.673 回答
0

你必须试试这个。说明:在发送rtx到接收类时,您还必须传递一个表示您的发送类的键 int。我只使用这种方法。

public class Sender1
{
    Receiver save;Object rtx;
    public void somefunc(){

        final int Me=100;

        save.setCode(rtx, Me);
    }
}
public class Sender2
{
    Receiver save;Object rtx;
    public void somefunc(){

        final int Me=200;

        save.setCode(rtx, Me);
    }
}
public class Receiver{
    public void setCode(Object arg, int sender){
        final int Sender1=100, Sender2=200;
        if(sender==Sender1){
            ...
        }
        else if(sender==Sender2){
            ...
        }
        else ...
    }
}
于 2013-09-01T12:00:02.147 回答
0

instanceof比将要使用的更快toString()

于 2013-09-01T11:04:40.537 回答