有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Comparator作为静态字段接口还是实现?

我有一个已经具有“自然”顺序的类,并且希望定义一个不同的比较器,它可以类似于String.CASE_INSENSITIVE_ORDER使用,也就是说,将它定义为需要时引用的实例化静态字段

对于实际比较类型的接口Foo(它将是Comparator<Foo>),我赞成将它放在那里,而不是FooImpl(在这个特定的情况下,如果这有区别的话,只有一个实现)。它是使用一个类似于字符串的内部类实现的,当然这个类必须是公共的,因为Foo是一个接口

如果用Foo代替impl,为什么用Foo更好?我也不关心实现类的公共可见性,但它应该是一个独立的独立包可见实体吗


共 (2) 个答案

  1. # 1 楼答案

    如果它是特定于接口的,则输入接口。如果是针对具体实施的,那么就付诸实施。这也是最有意义的。当前实现的数量无关紧要。无论如何,您都可以为一个实现提供它自己的特定于实现的比较器

  2. # 2 楼答案

    比较器是否打算在FooImpl之外使用?如果是这样的话,您可以把它放在接口中,就像放在枚举中一样。如果使用新比较器的任何代码仅使用Foo接口,我不会将其放入FooImpl中

    他们不需要仅仅为了使用比较器而了解FooImpl