【问题标题】:Java: Accessing original class of an item inside an array list [duplicate]Java:访问数组列表中项目的原始类[重复]
【发布时间】:2015-12-13 07:30:40
【问题描述】:

假设我有以下课程:

public class AnSuperClass { ... }

public class AnBetterClass extends AnSuperClass { ... }

我还有以下 ArrayList:

private final ArrayList<AnSuperClass> theList;

我在其中放入了一些 AnBetterClass 和 AnSuperClass 类型的对象,如下所示:

theList.add(new AnBetterClass());
theList.add(new AnSuperClass());

如果我遍历列表:我如何知道我拥有两个类中的哪一个?以下查询将始终返回 false:

boolean foundOther = false;
for(AnSuperClass asc: theList)
    if(!(asc instanceof AnSuperClass))
        foundOther = true;
return foundOther;

帮助可取

附:注释也不起作用。

【问题讨论】:

  • instanceof 检查整​​个层次结构。 AnBetterClassAnSuperClass
  • 是的,我知道,但我完全不知道如何解决这个问题

标签: java arraylist


【解决方案1】:

你可以使用getClass()方法

    ArrayList<AnSuperClass> theList = new ArrayList<>();
    theList.add(new AnBetterClass());
    theList.add(new AnSuperClass());
    for(AnSuperClass asc: theList)
        System.out.println(asc.getClass());

打印出来

class pck.AnBetterClass
class pck.AnSuperClass

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2015-01-03
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多