相关疑难解决方法(0)

instanceof和Class.isAssignableFrom(...)有什么区别?

以下哪项更好?

a instanceof B
Run Code Online (Sandbox Code Playgroud)

要么

B.class.isAssignableFrom(a.getClass())
Run Code Online (Sandbox Code Playgroud)

我所知道的唯一区别是,当'a'为null时,第一个返回false,而第二个抛出异常.除此之外,他们总是给出相同的结果吗?

java reflection instanceof

441
推荐指数
9
解决办法
25万
查看次数

类#isInstance vs Class#isAssignableFrom

鉴于a Class<?> superType和a Object subInstance,它们之间有什么区别

superType.isInstance(subInstance)
Run Code Online (Sandbox Code Playgroud)

superType.isAssignableFrom(subInstance.getClass())
Run Code Online (Sandbox Code Playgroud)

(如果有的话)?

java class instance

5
推荐指数
1
解决办法
1323
查看次数

将classname传递给方法

我的程序倾向于使用大量的包装异常(SwingWorker例如,包装所有异常ExecutionException).所以,我正在尝试编写一个方法,允许我检查异常或其任何原因是否instanceof是异常类型,但我不知道如何(如果可能的话)传递JUST类名作为方法的参数.

到目前为止,我有这个:

public static boolean errorOrCausesInstanceOfClass(Throwable e, Class c) {
    return e != null && (e.getClass().equals(c) || (e.getCause() != null && errorOrCausesInstanceOfClass(e.getCause(), c)));
}
Run Code Online (Sandbox Code Playgroud)

但这只有在e.getClass()完全相同的情况下才有效c.getClass().但是我想检查使用instanceof以捕获子类.

有没有办法实现这个目标?

java instanceof

3
推荐指数
1
解决办法
99
查看次数

为什么在Java中没有定义类的符号,除非访问它们的属性?

考虑最简单的示例。我们有

public class Foo {}
Run Code Online (Sandbox Code Playgroud)

因此我们可以说

Foo.class // ==> class Foo
Run Code Online (Sandbox Code Playgroud)

因此,Foo应该合理地认为应该是a java.lang.Class,因为我们显然可以访问它,并且可以在当前上下文中对其进行操作。然而

Foo instanceof java.lang.Class
Run Code Online (Sandbox Code Playgroud)

引发错误

cannot find symbol
  symbol:    variable Foo
Foo instanceof java.lang.Class
^-^
Run Code Online (Sandbox Code Playgroud)

但是,这与instanceof本身无关。只是

Foo
Run Code Online (Sandbox Code Playgroud)

仅在OpenJDK Shell中会产生相同的错误。

Foo如果Foo当前上下文中不存在属性,我们如何访问?

java

3
推荐指数
1
解决办法
79
查看次数

检查某个对象是否是列表中某个类的实例

因此,我想要一个类型列表,然后遍历该列表并检查对象是否是该列表中类型的实例。

这就是我想像的那样,但是那不是Java语法。Type1.class也不起作用

List<Object> types = new ArrayList();
types.add(Type1);
types.add(Type2);

for (Object type : types) {
    if (someObject instanceof type) {
        doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

或者用同样的事情List<Class>或类似的东西

这显然行不通,但是我不知道什么是最好的方法。当然,我可以对要检查的每个对象进行硬编码,但这似乎并不那么优雅。

java

2
推荐指数
1
解决办法
125
查看次数

将对象与存储在字段中的类进行比较

我试图partc构造函数给出的类进行比较,但由于某种原因,我的IDE会弹出一个警告,它始终为false.

Class<? extends Part> c;

public Slot(Class<? extends Part> c){
    this.c = c;
}

public boolean addItem(Part part){
    return part instanceof c;
}
Run Code Online (Sandbox Code Playgroud)

这是为什么的instanceof语句总是假的,什么是正确的语法比较partc

java class

1
推荐指数
1
解决办法
87
查看次数

如何将String转换为我自己的类?

我想知道如何将String转换为我自己的类,就像org.json.JSONObject那样.

您可以将String:{"key":"value"}转换为JSONObject,即使JSONObject仅从Object继承.

如何仅在继承Object时获取要转换为MyOwnClassObject的String?

java

0
推荐指数
1
解决办法
229
查看次数

标签 统计

java ×7

class ×2

instanceof ×2

instance ×1

reflection ×1