java - Java 方法中的匿名内部 Comparable 类?

标签 java comparable anonymous-inner-class

<分区>

我的教授在关于作用域和生命周期的练习中提供了这段代码:

class AnonymousInnerClassInMethod {

    public static void main(String[] args) {
        int local = 1;
        Comparable compare = new Comparable () {
            public int compareTo(Object value) {
                return (Integer)value - local;
            }
        };
        System.out.println(compare.compareTo(5));
    }

}

撇开 local 不可访问(这是练习)和 Comparable 未参数化(疏忽?)的事实不谈……我从未见过这种构造,也不知道它甚至有可能。

  1. 这样做是为了避免为整个类(class)扩展 Comparable 吗?
  2. 如果是,为什么?它是否更容易/可读/其他?
  3. 是否可以为任何接口(interface)编写此类匿名类?

最佳答案

它允许您在使用被隔离和/或依赖于对局部变量的访问的特定情况下使用类并覆盖方法。

它是否更容易在某种程度上取决于个人品味。然而,这意味着一切都在您的代码中就位,这使您能够了解正在发生的事情,而无需浏览到另一个文件或文件中的另一个位置。在像上面这样的简单情况下,这通常比必须在代码库中跳来跳去更容易使用。

要使 local 可访问,需要将其声明为 final

具体回答您的问题:

  1. 没有;它匿名扩展了另一个类,因此等同于定义一个扩展另一个类的类,因此适用相同的规则。您必须重写任何抽象方法。
  2. 它更具可读性,因为它与需要它的代码位于同一位置。
  3. 是的,任何接口(interface)或类。

关于java - Java 方法中的匿名内部 Comparable 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22814581/

相关文章:

java - GL绘图纹理绑定(bind)错误

java - 在 Freemarker 模板中检查 Spring 安全角色和记录的用户名

java - Jackson 反序列化多态类而不是数组

java - 在 3 个不同的类别上使用可比较的

java - 通过注解查找匿名类

java - 优化java中的变量检查

java - 在接口(interface)中实现 Comparable

java - IDE 希望类是具有 Comparable 的抽象类

java - 这个实现会被称为匿名类吗?

c# - C#中的匿名内部类