Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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中向instanceOf check添加其他检查_Java_Instanceof - Fatal编程技术网

在java中向instanceOf check添加其他检查

在java中向instanceOf check添加其他检查,java,instanceof,Java,Instanceof,在这种情况下,我会检查一些类的实例以继续我的逻辑 例如 if (obj instanceof X) { result = true; } 但现在我的遗留代码中有很多地方都在使用它 我现在的问题是,只有当某个全局属性变量为true时,instanceOf才会返回true 我正在寻找替换所有这些instanceOf检查的替代解决方案,如下所示: if (GLOBALPROPERTY == true) { if (obj instanceof X) { res

在这种情况下,我会检查一些类的实例以继续我的逻辑

例如

if (obj instanceof X)
{
    result = true;
}
但现在我的遗留代码中有很多地方都在使用它

我现在的问题是,只有当某个全局属性变量为true时,instanceOf才会返回true

我正在寻找替换所有这些instanceOf检查的替代解决方案,如下所示:

if (GLOBALPROPERTY == true)
{
    if (obj instanceof X)
    {
        result = true;
    }
}  
我是否可以将此检查注入类X本身,这样,无论我在哪里检查该类的实例,它都将返回false。

不,您不能

我能想到的最近的事情是使用AspectJ进行面向方面编程。但这会很棘手——首先,您可能必须从使用instanceof切换到使用适当的多态方法调用


但实际上,您可能只需要搜索并替换整个代码库。

您在上面使用的所有类都有一个共同的祖先类吗,你可以只做
result=obj instanceof X
而不是
if
@R.J:如果
result
可能已经是
true
,他不想将其重置为
false
。因此,准确地说,只有当全局属性为true时,我才会加载这些类,否则将找不到这些类。因此,如果我简单地调用result=obj instanceof X,它应该抛出一个NoClassDefFoundError异常。@T.J.Crowder-如果它已经为真,那么如果和
result=true,该
的确切用法是什么?!然而,这只是一个建议,可以帮助OP删除一些(可能的)额外代码。没有别的了。