将比较器对象存储在数组中 [英] store comparators objects in array

查看:156
本文介绍了将比较器对象存储在数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为我的对象定义了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆