jdk 8 lambda表达式 及在Android Studio的使用示例
以前觉得java让人觉得有趣的一个特点是支持:匿名内部类,而最近发现jdk8已支持lambda并有更简便的方式,来实现匿名内部类. 这会让程序员更舒服,更喜欢java. 多年前觉得java语法和C#语法差得有点远,没有C#那么写来方便,现在觉得jdk8也很不错了。做技术还是要向前看。
final TextView txtView2 = (TextView)this.findViewById(R.id.txtView2);
Button btnChangeView = (Button)findViewById(R.id.btnChangeText); btnChangeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtView2.setText("Text 改变");
}
});
新的实现方式:
final TextView txtView2 = (TextView)this.findViewById(R.id.txtView2);
Button btnChangeView = (Button)findViewById(R.id.btnChangeText); //btnChangeView.setOnClickListener(e -> Log.i("MyTag", "Button Clicked.") );
assert btnChangeView != null;
btnChangeView.setOnClickListener((view) -> {
Log.i(TAG, "btnChangeView Clicked:" + view.getId());
txtView2.setText("Text 改变:" + new Date().toString());
});
参考:
http://stackoverflow.com/questions/37004069/errorjack-is-required-to-support-java-8-language-features
http://www.jianshu.com/p/5fc2b3362702
需要更改配置: build.gradle
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "com.firstapp.test.firstapp"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
jackOptions {
enabled true
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
}
jdk 8 lambda表达式 及在Android Studio的使用示例的更多相关文章
- jdk1.8新特性之lambda表达式及在Android Studio中的使用举例
Jdk1.8已经出很久了但是很多同学对它的特性在android studio 中的应用可能还不是很熟悉,今天我们就来对这个新特性在AS中做它的应用实践. 一.首先在有JDK1.8的情况下我们要在AS的 ...
- JDK中Lambda表达式的序列化与SerializedLambda的巧妙使用
前提 笔者在下班空余时间想以Javassist为核心基于JDBC写一套摒弃反射调用的轻量级的ORM框架,过程中有研读mybatis.tk-mapper.mybatis-plus和spring-boot ...
- jdk 8 lambda表达式以及Predicate接口
了解lambda之前先了解下什么是函数式接口,函数式接口即接口里必须有一个抽象方法(抽象的方法只能有一个,可以有其他的用default修饰的方法) jdk8里新增了一个@FunctionalInter ...
- Android必知必会-Android Studio下配置和使用Lambda
移动端如果访问不佳,请访问–>Github版 背景 和朋友讨论 JAVA8 的新特性,聊到Lambda,正好在掘金上看到一篇相关的文章,结合资料,作一个总结,特别是记录下实际使用中遇到的问题. ...
- lambda表达式
什么是Lambda表达式 lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出 ...
- Error:Could not determine Java version-- 关于Android Studio JDK设置和JVM version设置
最近在装AS的时候遇到一个问题,新建工程后,编译报错,Error:Could not determine Java version 不言而喻:可定是JDK的问题,网上查到2中可能性 第一:就是JDK路 ...
- Android开发环境部署:JDK+Android Studio
1. 刚开始接触Android开发,首先需要为你的电脑安装java JDK(Java开发工具包),不管是用Eclipse还是Android Studio都需要只吃Java语言运行吧. 官网:Oracl ...
- JDK 8 中Lambda表达式的使用
认识Lambda表达式 首先来引入一个示例 new Thread(new Runnable() { @Override public void run() { Syst ...
- ubuntu 14.10 lts 64-bits环境下使用Android Studio
距离google发布android studio 1.0正式版已经两个月左右了.由于一直习惯使用eclipse+ADT的模式,而且曾在windows下试用一次Android Studio预览版,感觉卡 ...
随机推荐
- Tr A(矩阵快速幂)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用
基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extj ...
- 正则表达式学习日记zz
1."."为通配符,表示任何一个字符,例如:"a.c"可以匹配"anc"."abc"."acc": ...
- PHP中常见的页面跳转方法
转载自冠威博客 [ http://www.guanwei.org/ ]本文链接地址:http://www.guanwei.org/post/PHPnotes/04/php-redirect-metho ...
- Js和asp.net各自设置的cookie相互读取的方法
在Web的开发过程中,避免不了要使用cookie,在这里,我们在前台设置cookie,也可以在后台设置cookie,关键是在前后台设置的cookie,怎么去相互读取,代码如下: (1) 前台 ...
- 原来还有这样的记词方法_Java版记不规则动词_博主推荐
昨天在看一本英语书的不规则动词的时候,突然产生的灵感:就是想把这样记单词简单方式,用程序代码实现,然后,使用户可以与之进行交互 这样,在用户背不规则动词的时候就会轻松把它给记住.基于这一点,于是我就思 ...
- 利用Oracle的row_number() over函数消除重复的记录
.select d.id,d.outer_code from dict_depts_source d order by outer_code(查看重复数据) .select d.id,d.outer_ ...
- IIS 301 跳转
IIS设置301重定向 IIS服务器下做301永久重定向设置方法. IIS6设置301重定向: 1.新建一个站点,对应目录如E:\wwwroot\301web.该目录下只需要1个文件,即index.h ...
- SEPM安装完之后的一些细节之处
1. 若SEPM与GUP为同一台主机,则必须在其上也安装SEP, 否则其他客户端无法更新. 2. 先指定GUP,然后指派策略 3. Latest on Manager可以通过离线jdb文件进行 ...
- CSS3 2D Transform
在 一个二维或三维空间,元素可以被扭曲.移位或旋转.只不过2D变形工作在X轴和Y轴,也就是大家常说的水平轴和垂直轴:而3D变形工作在X轴和Y轴之外, 还有一个Z轴.这些3D变换不仅可以定义元素的长度和 ...