代码之家  ›  专栏  ›  技术社区  ›  geowa4

爪哇句法糖

  •  11
  • geowa4  · 技术社区  · 14 年前

    我今天碰到了这段代码,我不知道它是如何工作的。我知道如何创建匿名类,但我习惯于看到方法签名,而不仅仅是一对大括号。这些大括号之间的代码是否被放入静态块中?它是否进入构造函数?或者是别的什么?

    conext.checking(new Expectations() {
        { // <- what does this pair of braces do?
            oneOf(alarm).getAttackAlarm(null);
        }
    });
    
    7 回复  |  直到 5 年前
        1
  •  16
  •   Hearen    5 年前

    Expectations exp = new Expectations();
    exp.oneOf(alarm).getAttackAlarm(null);
    conext.checking(exp)
    

    Map map = new HashMap() {{
      put("key1", "value1");   
      put("key2", "value2"); 
    }};
    

        2
  •  3
  •   Tim Frey    14 年前

    private final Collection<Integer> FIXED_COLLECTION = Collections.unmodifiableCollection(new HashSet<Integer>() 
    { // first set of braces declares anonymous inner class
        { add(1); add(2); add(3); } // second set is initializer block
    });
    
        3
  •  3
  •   Michael Barker    14 年前

    public class Foo {
        private int i = getDefaultValue();
    
        private static int getDefaultValue() {
            return 5;
        }
    }
    

    getDefaultValue() i

    public class Foo {
        private int i;
    
        {
            int z = 4 + 5;
            i = z + getDefaultValue();
        }
    
        private static int getDefaultValue() {
            return 5;
        }
    }
    

        4
  •  0
  •   Brian Agnew    14 年前

    oneOf()

    new Set<String>(){{add("one");add("two")}}
    

        5
  •  0
  •   DJClayworth    14 年前

        6
  •  0
  •   Faisal Feroz    14 年前

    new Expectations() { 
        { 
            oneOf(alarm).getAttackAlarm(null); 
        }
    }
    
        7
  •  0
  •   irreputable    14 年前

    Expection

    java.lang.Math

    new Math()
    {{
        double x = sin(23.65);
        double y = log(x);
        ...
    }};
    

    with names from Math
    {
        double x = sin(23.65);
        double y = log(x);
        ...
    }