我有抽象类A.B类继承自A,C类继承自B.
我创建了列出列表中所有对象的函数。我的ArrayList是从Class B和C。
创建的我想创建一个函数,只是列表对象有年龄(来自C类的对象)。怎么样?
答案 0 :(得分:3)
最简单的方法是简单地检查列表中每个对象的类型:
for (Object item : yourListWithBAndCs) {
if (item instanceof C) {
C itemAsC = (C) item;
// do something
} else { ... }
}
从Java8开始,您可以使用流和过滤器(Kudos to @Andrew Tobilko)来获取此建议:
list.stream().filter(i -> i instanceof C).collect(Collectors.toList());
以上将为您创建一个新列表;仅包含那些是C实例的对象。
答案 1 :(得分:-2)
class C extends B
{
int age;
ArrayList listAge;
C()
{
listAge = new ArrayList();
}
public void addAge()
{
listAge.add(age);
}
}