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
有点古怪,但有可能不公开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