gpt4 book ai didi

java - 如何检查自定义集合中元素的java数据类型?

转载 作者:行者123 更新时间:2023-11-29 03:57:30 25 4
gpt4 key购买 nike

Object ele=a.get(i);
if(ele instanceof java.lang.Integer){//cast to integer:
print("found Int");
}else{ //cast to string:
print("found: "+ele.getClass());
}
//prints: found: class com.cycling74.max.Atom$IntAtom

这是一大块代码的一部分,但这是相关的部分。我需要知道如何通过 cycling74 检查 Atom 类中元素的类型.

if(ele instanceof com.cycling74.max.Atom$IntAtom)
//ERROR: com.cycling74.max.Atom.IntAtom has private access in com.cycling74.max.Atom

有什么想法吗?非常感谢 - 这真的让我费尽心思!!

最佳答案

是的,不公开 IntAtom 是可能的,尽管它有点 hacky。

首先,您需要获取对私有(private)内部 IntAtom 类的引用:

public class SomeClass {
public static final Class<?> INT_ATOM_CLASS;
static {
Class<?> [] innerClasses = Atom.class.getDeclaredClasses();
Class<?> intAtomClass = null;
for (Class<?> klass : innerClasses) {
if (klass.getSimpleName().equals("IntAtom")) {
intAtomClass = klass;
break;
}
}
INT_ATOM_CLASS = intAtomClass;
}
}

然后做instanceof检查:

if (SomeClass.INT_ATOM_CLASS.isAssignableFrom(ele.getClass())) {
// do stuff
}

Class.isAssignableFrom(Class c); 的 Javadoc

关于java - 如何检查自定义集合中元素的java数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5488963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com