今天群里讨论java的lambda实现. 后来不断衍生谈到了为什么lambda和匿名内部类只能使用语义final的外部变量. 最开始以为是java的lambda实现问题,编译期魔法会把外部引用作为参数传入所以在内部变化也影响不了下次调用的值,所以就干脆final了,如果用类的属性来保管这个变量就可以了. In [64]: def outer(a:int): ...: def inner(): ...: nonlocal a ...: a = a + a ...: return a ...: re
Lamb表达式匿名类实现接口方法 import java.util.ArrayList; public class HandlerDemo{ public static void main(String[] args) { ArrayList<Object> list = new ArrayList<>(); // 测试匿名类实现doBusy方法 new HandlerDemo().testHandler(() -> { list.add("测试匿名类实现doBus
1.自动属性 Auto-Implemented Properties 2.隐式类型 var var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 与 集合初始化器 { } Person p = new Person(){ Name="aa",Age=18};//属性初始化器 List<Person> list = new List<Person>(){new Person(){ Name="aa&q
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Predicate; /** * Created by Administrator on 2017/8/19 0013. */ public class Test { /*************************************JAVA8 in Action:行为参数化,匿名类及
package com.bawei.multithread; //注意:模板方法我们通常使用抽象类或者抽象方法!这里我们为了方便在本类中使用就没有使用抽象类/抽象方法 public class TemplateThread { //如果这个方法不想被子类或者别人随意改动[这样子类就不能覆写该方法了],这里方法就要设置为final方法 public final void println(String message){ System.out.println("###################
我只发现了关于this的区别: 匿名类的this,是指匿名类的实例对象. lambda的this,是指外部类的实例对象. 测试代码如下: /** * Created by LarryZeal on 2017/9/13. */ public class ThisTest { public static void main(String[] args){ ThisTest thisTest = new ThisTest(); thisTest.test(); } public void test()
函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type used to indicate that an interface * type declaration is intended to be a <i>functional interface</i> as * defined by the Java Language Specificat
/* 匿名内部类:就是内部类的简写格式. 必须前提:内部类必须继承或者实现一个类或者接口. 匿名内部类其实就是一个匿名 子类对象. 格式:new 父类对象 or 接口(){ 子类内容:(覆盖父类的, 而且可以增加自己的方法) }//相当于将 继承父类 和 new 的过程 写到了一起有某有!很方便有某有! */ class Outer{ int num; public Outer(){ num = 5; } class Inner{ int num; public Inner(){ num = 1
class Test { delegate K proxy<T, K>(T t, K k); //泛型委托,注意返回值的写法,返回值的类型K先于其声明proxy<T,K>中的K,这是C#底层的事 public static void Main() { proxy<int, string> pxy = varCat; proxy<int, int> padd = addTest; , "xyz"); , ); , age = , name