知道它来自哪个班级

时间:2013-09-01 10:59:18

标签: java class

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

我说实话,我当然不知道怎么做,所以我甚至无法启动它......

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

save.setCode(rtx);

5 个答案:

答案 0 :(得分:3)

使用instanceOf运算符。

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

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

根据java docs

  

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

使用instanceof

toString()更快

答案 3 :(得分:0)

如果我做对了,你要做的就是根据你的班级来电者做出决定,而不是根据所传递的信息做出决定。

为此,你需要:

  1. 在您的参数列表中发送一些额外信息。
  2. 如果你想让它变得非常动态(虽然我强烈建议不要采用这种方法),唯一的选择就是看看堆栈跟踪(通过Thread.currentThread().getStackTrace())。

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