标签:接口 pat lambda表达式 rdf 根据 写代码 list false 表达式
android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { applicationId "co.example.leo.lambda" minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" jackOptions.enabled = true } compileOptions{ sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ } } }
之后就可以使用Lambda表达式来编写代码了,比如传统情况下开启一个子线程的写法如下:
1 new Thread(new Runnable() { 2 @Override 3 public void run() { 4 //处理具体的逻辑 5 } 6 }).start();
使用Lambda表达式可以这样写
1 new Thread(() ->{ 2 //处理具体的逻辑 3 }).start();
1 Runnable runnable = new Runnable() { 2 @Override 3 public void run() { 4 5 } 6 };
1 Runnable runnable = ()->{ 2 3 };
了解了Lambda表达式的基本写法,接下来我们尝试自定义一个接口,然后再使用Lambda表达式的方式进行实现
新建一个MyListener接口 代码如下所示
1 public interface MyListerner { 2 3 String doSomething(String a, int b); 4 }
1 MyListerner myListerner = (String a, int b) ->{ 2 String result = a + b; 3 return result; 4 };
可以看到 doSomething()方法的参数直接写在括号里面就可以了,而返回值则仍然像往常一样。写在具体实现的最后一行即可。
Java中可以根据上下文自动推断出Lambda表达式中的参数类型,因此上面的代码也可以简化成如下写法。
1 MyListerner listerner = (a,b)->{、 2 String result = a +b; 3 return result; 4 };
1 Button button = (Button)findViewById(R.id.parent); 2 button.setOnClickListener((v)->{ 3 //处理点击事件 4 });
当接口的待实现方法有且只有一个参数的时候,还可以进一步简化,将参数外面的括号去掉,如下所示。
1 Button button = (Button)findViewById(R.id.parent); 2 button.setOnClickListener(v->{ 3 //处理点击事件 4 });
标签:接口 pat lambda表达式 rdf 根据 写代码 list false 表达式
原文地址:http://www.cnblogs.com/chase1/p/7141090.html