将比较器对象存储在数组中 [英] store comparators objects in array
本文介绍了将比较器对象存储在数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我为我的对象定义了4个比较器,如下所示:
I have defined 4 comparators for my object like this:
public static Comparator<mObject> comp0 = new Comparator<mObject>() {
@Override
public int compare(mObject l, mObject r) {
...compare
}
};
public static Comparator<mObject> comp1 = new Comparator<mObject>() {
@Override
public int compare(mObject l, mObject r) {
...compare
}
};
public static Comparator<mObject> comp2 = new Comparator<mObject>() {
@Override
public int compare(mObject l, mObject r) {
...compare
}
};
public static Comparator<mObject> comp4 = new Comparator<mObject>() {
@Override
public int compare(mObject l, mObject r) {
...compare
}
};
现在我想创建一个包含4个比较器的数组,如下所示:
Now i want to create an array with the 4 comparators ,like this :
public final static Comparator<mObject>[] Object_comparators = { comp0,
comp1,
comp2,
comp3};
但是Eclipse强调{..}之间的所有内容,就像它是一个错误。为什么是它,以及如何我可以解决它吗?
but Eclipse underlines everything between {..} like it is an error .Why is it ,and how could i fix it ?
推荐答案
您无法使用参数化泛型类型创建类数组。
You cannot create an array of classes with a parameterized generic type.
如果你不介意失去类型安全,你可以这样做:
If you don't mind losing type safety, you can do this:
Comparator[] list = new Comparator[4];
但我首选的策略是使用 List
:
But my preferred strategy would be to use a List
:
List<Comparator<mObject>> list = Arrays.asList(comp0, comp1, comp2, comp3);
这篇关于将比较器对象存储在数组中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文