首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查自定义集合中元素的java数据类型?

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

Stack Overflow用户
提问于 2011-03-31 00:08:07
回答 3查看 2.1K关注 0票数 1
代码语言:javascript
运行
复制
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类中元素的类型。

代码语言:javascript
运行
复制
if(ele instanceof com.cycling74.max.Atom$IntAtom)
//ERROR: com.cycling74.max.Atom.IntAtom has private access in com.cycling74.max.Atom

有什么想法吗?非常感谢--这真让我头疼!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-31 00:25:41

是的,不公开IntAtom也是可能的,尽管这有点老生常谈。

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

代码语言:javascript
运行
复制
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检查:

代码语言:javascript
运行
复制
if (SomeClass.INT_ATOM_CLASS.isAssignableFrom(ele.getClass())) {
   // do stuff
}

用于Class.isAssignableFrom(Class c);的Javadoc

票数 3
EN

Stack Overflow用户

发布于 2011-03-31 00:12:12

我认为您必须将IntAtom设置为公共的,或者在Atom中提供一个公共函数来验证对象是否为IntAtom。现在还不能比较类定义,因为它是Atom私有的。

票数 1
EN

Stack Overflow用户

发布于 2011-03-31 00:27:10

非常感谢朋友们-看起来Atom类在某个地方有一个叫做isInt()的方法,它可以检查内置的数据类型。如果你们没有回来,我是不会去找它的,所以我真的很感谢你们的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5488963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档