有 Java 编程相关的问题?

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

理解Java中的语法

我可以在网上的几个例子中看到一种新的语法,下面是一个例子:

Accumulator<Integer> sum = new Accumulator<Integer>(){
    public Integer accumulate(Integer t1, Integer t2) {
    return t1+t2;
     }
  };

一般来说,当一个人在创建一个类的实例后编写{ a method }时,这意味着什么?这是某种古老的语法吗

谢谢


共 (6) 个答案

  1. # 1 楼答案

    不,这是一个匿名的内部类。它具有其类型的接口或类的签名,但可以重写公共方法

  2. # 2 楼答案

    这称为匿名内部类,即没有名称的类,因此可以与其唯一的一个实例一起创建。当您需要实现某些接口并且只需要一个此类实现实例时,这是减少项目中可见类数量的方法

    但不要滥用此功能。只有在实现非常简单(1-2行)时才使用它

  3. # 4 楼答案

    这是一个常用的匿名内部类

    “匿名类本质上是一个没有名字的本地类。”

  4. # 5 楼答案

    你正在创建一个匿名的内部类

    new Accumulator<Integer>() {
        @Override
        public Integer accumulate(Integer t1, Integer t2) {
            return t1 + t2;
        }
    };
    

    定义Accumulator的匿名实现。然后,将对这个匿名类的引用分配给sum

    可以将其视为同时定义和分配实现的便捷方式。这是一个syntactic sugar

  5. # 6 楼答案

    它要么使用重载方法创建匿名子类,要么创建匿名接口实现(取决于Accululator是类还是接口)