Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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_Class - Fatal编程技术网

Java 知道它来自哪个班级

Java 知道它来自哪个班级,java,class,Java,Class,我将信息从两个Java类发送到另一个Java类,但是我想做一个if/else情况,如果它来自一个类,请在if中输入,如果它来自另一个类,请输入else 老实说,我确实不知道该怎么做,所以我甚至无法启动它 我在这两种情况下发送的是: save.setCode(rtx); 如果要发送对象实例,则可以使用instanceof运算符检查该对象是否属于特定类- if (myobject instanceof MyClass1) { // then do your thing } else if

我将信息从两个Java类发送到另一个Java类,但是我想做一个if/else情况,如果它来自一个类,请在if中输入,如果它来自另一个类,请输入else

老实说,我确实不知道该怎么做,所以我甚至无法启动它

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

save.setCode(rtx);

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

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

但这是强烈反对的。使用多态性来实现这种行为。

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

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

但这是强烈反对的。使用多态性来实现这种行为。

使用操作符的
instanceOf

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

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

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


使用运算符的
实例

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

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

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


instanceof
快的是使用
toString()

instanceof
快的是使用
toString()
如果我做对了,那么您要做的是根据类的调用方而不是传递的信息做出一些决定

为此,您需要:

  • 在参数列表中发送一些额外的信息
  • 如果您希望这是真正动态的(尽管我强烈建议不要使用这种方法),那么唯一的选择就是查看堆栈跟踪(通过
    Thread.currentThread().getStackTrace()

  • 如果我没弄错的话,你要做的是根据谁是你的类的调用者而不是根据传递的信息来做决定

    为此,您需要:

  • 在参数列表中发送一些额外的信息
  • 如果您希望这是真正动态的(尽管我强烈建议不要使用这种方法),那么唯一的选择就是查看堆栈跟踪(通过
    Thread.currentThread().getStackTrace()
  • 你必须试试这个。 说明: 在向receiver类发送
    rtx
    时,还必须传递一个表示发送类的key int。我只使用此方法。

    你必须试试这个。 说明: 在向receiver类发送
    rtx
    时,还必须传递一个表示发送类的key int。我只使用此方法。


    “发送信息”是如何实现的?粘贴示例代码…您是否尝试过
    info.getClass()
    ?为什么要这样做?方法通常不应该关心从何处调用它们。这听起来像是你在为自己创造一碗。发布你的代码,以便人们能够为你的问题提供更好的解决方案。如何实现“发送信息”功能?粘贴你的示例代码…你是否尝试过
    info.getClass()
    ?为什么要这样做?方法通常不应该关心从何处调用它们。这听起来像是你在为自己创造一碗。发布你的代码,这样人们就可以为你的问题提供更好的解决方案。我一定解释得很糟糕,我用save.setCode(rtx)将一个字符串从一个类发送到另一个类;(例如)我想知道它来自哪里。是的,不管已经传递的信息如何,这证实了我的猜测。好的,如果您的逻辑依赖于一些额外的信息,那么将该部分作为方法签名:
    setCode(字符串代码,上下文)
    ,其中
    Context
    是您想要依赖的任何类型的信息。检查堆栈跟踪并找出实际调用方速度慢、容易出错且与适当的OO设计不兼容。噢,哇。。。这确实让它起作用了。。。骡子!骡子!我会给你们投票,但我没有15个声誉,这是我在这里的第一个问题……我一定解释得很糟糕,我用save.setCode(rtx)将一个字符串从一个类发送到另一个类;(例如)我想知道它来自哪里。是的,不管已经传递的信息如何,这证实了我的猜测。好的,如果您的逻辑依赖于一些额外的信息,那么将该部分作为方法签名:
    setCode(字符串代码,上下文)
    ,其中
    Context
    是您想要依赖的任何类型的信息。检查堆栈跟踪并找出实际调用方速度慢、容易出错且与适当的OO设计不兼容。噢,哇。。。这确实让它起作用了。。。骡子!骡子!我会投你一票,但我没有15个名声,这是我在这里的第一个问题。。。。