将比较器对象存储在数组中

Nik*_*koi 3 java

我为我的对象定义了4个比较器,如下所示:

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
        }
    };
Run Code Online (Sandbox Code Playgroud)

现在我想用4个比较器创建一个数组,如下所示:

public final static Comparator<mObject>[] Object_comparators = { comp0,
        comp1,
        comp2,
        comp3};
Run Code Online (Sandbox Code Playgroud)

但是Eclipse强调{..}之间的所有内容,就像它是一个错误.为什么它,我怎么能解决它?

Mar*_*iot 9

您无法使用参数化泛型类型创建类数组.

如果你不介意失去类型安全,你可以这样做:

Comparator[] list = new Comparator[4];
Run Code Online (Sandbox Code Playgroud)

但我首选的策略是使用List:

List<Comparator<mObject>> list = Arrays.asList(comp0, comp1, comp2, comp3);
Run Code Online (Sandbox Code Playgroud)