假设我有这两个ArrayLists:
ArrayList<Book> book = new ArrayList<>();
ArrayList<Journal> journal = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
Book并且Journal是两个不同的类.
两者Book和Journal对象都有一个getYear()方法.我想创建一个传入未知ArrayList类型的方法,并将传入的年份与列表中的对象进行比较.以下代码为main:
public static void fooBar(int year, ArrayList<?> list)
{
if(list.get(0).getYear() == year) // does not work!
{
}
}
Run Code Online (Sandbox Code Playgroud)
如果将未知类型传递给方法,则无法使用该对象的方法(getYear()).如果不做两个做同样事情的方法(一个用于Book一个用于一个Journal),我怎么能这样做呢?
rge*_*man 13
您可以创建一个HasYear声明getYear()方法的接口(如果它尚不存在)(可能已命名),并拥有Book并Journal实现它.
然后你可以让你的fooBar方法采用一个ArrayList类型参数a HasYear.
public static void fooBar(int year, ArrayList<? extends HasYear> list)
Run Code Online (Sandbox Code Playgroud)
这? extends是因为它是消费者而不是生产者.
| 归档时间: |
|
| 查看次数: |
1751 次 |
| 最近记录: |