java - 使用比较器 "offtopic"是不好的 java 风格吗?

标签 java coding-style

感谢@Thilo,我对这样的界面感到愤怒:

public interface compareOp<T> {
     public boolean compare(T op1, T op2);
}

以及“实现者”:

private static final compareOp<Integer> GreaterThan = new compareOp<Integer>() {
    @Override
    public boolean compare(Integer x, Integer y) {
        if (x > y)
            return true;
        return false;
    }
};
private static final compareOp<Integer> SameThan = new compareOp<Integer>() {
    @Override
    public boolean compare(Integer x, Integer y) {
        if (x == y)
            return true;
        return false;
    }
};
private static final compareOp<Integer> LessThan = new compareOp<Integer>() {
    @Override
    public boolean compare(Integer x, Integer y) {
        if (x < y)
            return true;
        return false;
    }
};

我写了一些代码来进行比较 我需要这个代码三次,以达到更佳效果,但我不想重复该代码,因此我制作了一个参数 comp 类型比较器并检查:

if (comp.compare(output1[i][n1], output2[j][n2]) == 0)

我的比较器不能用于正常排序,因为它们违反了 -1,0,1 规则,但我不将它们用于其他用途

对于 Java 规则来说,这种风格是否不好?

这是我的比较器的代码:

private static final Comparator<Integer> GreaterThen = new Comparator<Integer>() {
    @Override
    public int compare(Integer x, Integer y) {
        if (x > y)
            return 0;
        return -1;
    }
};
private static final Comparator<Integer> SameThen = new Comparator<Integer>() {
    @Override
    public int compare(Integer x, Integer y) {
        if (x == y)
            return 0;
        if (x > y)
            return 1;
        return -1;

    }
};
private static final Comparator<Integer> LessThen = new Comparator<Integer>() {
    @Override
    public int compare(Integer x, Integer y) {
        if (x < y)
            return 0;
        return 1;
    }
};

这就是我使用它们的方式:

    new Helpers().subSetsCompared(input1, 3, input2, 4, GreaterThen);
    new Helpers().subSetsCompared(input1, 3, input2, 4, SameThen);
    new Helpers().subSetsCompared(input1, 3, input2, 4, LessThen);

最佳答案

如果这些不是“真正的”比较器,并且您仅从自己的代码中调用它们,那么您不妨定义自己的接口(interface)。这对我来说似乎更干净。

关于java - 使用比较器 "offtopic"是不好的 java 风格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18914695/

相关文章:

python - 带有 wxPython 的 WinXP 按钮样式

java - 使用循环枚举枚举实例

java - 如何从设备本身发送 Firebase 推送通知?

java - 在 switch case 中使用枚举的序号而不是使用枚举有什么重要的理由吗?

java - 使用 Java Smack API 发送和接收消息不适用于示例

Java在try-catch-finally机制中的返回值

java - IntelliJ 中的自动格式化行

java - Tomcat JNDI : managed stack of objects

java - 使用复合 Material 时如何确定并转换为特定对象?

c++ - 在 C++ 中使用 typedef 声明结构