在使用Java8 新特性中关于Period.between的方法时需注意该方法获取日期的区间问题. @Test public void test1(){ LocalDate from = LocalDate.of(2018,10,1); System.out.println(Period.between(from,LocalDate.now()).getDays()); } 首先,猜测一下上面的代码返回的天数是多少?15天,你猜对了吗? 如果不理解为什么是15天,那么咱们再打印一下其他的心气,你…
30分钟入门Java8之默认方法和静态接口方法 前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方法和静态接口方法. 这一Java8的新语言特性,在Android N中也得到了支持.至于如何在Android开发中配置Java8的开发环境,请查看上一篇文章30分钟入门Java8之lambda表达式. 默认方法 默认方法让我们能给我们的软件库的接口增加新的方法,并且能保证对使用这个接口的老版本代码的…
JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ 在Lamda新特性的支持下,JAVA8中可以使用lamda表达式来创建匿名方法.然而,有时候我们仅仅是需要调用一个已存在的方法(如java中已经定义好的方法),在这时候java8新特性“方法引用”将会进一步简化操作(注意:需要有Lamda的支持). 方法引用的四种形式: 引用静态方法-->类名称::static 方法名称: 引用某个对象的实例的普通方法-->示例化对象::普通方法: 引用某个类型的任意对象的实例的普通方法--…
实战介绍 学习完Java8的Stream方法,可能你正准备大展身手,却发现遇到不少问题,本篇文章为大家带来一个findAny方法抛出java.lang.NullPointerException的场景. 实战内容 先看一下下面的代码,猜测一下执行之后会打印什么? public class FindAnyTest { @Test public void test() { List<Foo> list = new ArrayList<>(); list.add(new Foo()); /…
什么是方法引用   方法引用可以被看作仅仅调用特定方法的Lamdba表达式的一种快捷方式.比如说Lamdba代表的只是直接调用这个方法,最好还是用名称来调用它,可不用用对象.方法名(),方法引用,引用:就是让你跟据已有的方法来创建一个Lamdba表达式.   并且这么做还有一个好处,就是可以更加清晰明白的理解这行代码的意思.让代码变的优雅起来. 方法引用的简单使用 //比如说有一个Person类,里面有一个getName()方法. //用Lamdba来使用:用函数类型接口 Function<Pe…
在一日一控件的口号下,终于写好了五十几个自定义控件,包括各种仪表盘,各种温度计,各种进度条,各种按钮等,具体可参见(http://www.cnblogs.com/feiyangqingyun/p/6128288.html)目前演示DEMO都是采用提升的方法来显示的,一直有个想法,想做成和QWT一样的可以直接编译集成到Qt Creator中,方便用户直接拖控件使用,即做成Qt Creator的插件,Qt要写Qt Creator的插件极为方便,和新建Qt Widget项目一样的步骤.方法可参见(ht…
按照常规思维,往一个map里put一个已经存在的key,会把原有的key对应的value值覆盖,然而通过一次线上问题,发现Java8中的Collectors.toMap反其道而行之,它默认给抛异常,抛异常... 线上业务代码出现Duplicate Key的异常,影响了业务逻辑,查看抛出异常部分的代码,类似以下写法: Map<Integer, String> map = list.stream().collect(Collectors.toMap(Person::getId, Person::g…
前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方法和静态接口方法. 这一Java8的新语言特性,在Android N中也得到了支持.至于如何在Android开发中配置Java8的开发环境,请查看上一篇文章30分钟入门Java8之lambda表达式. 默认方法 默认方法让我们能给我们的软件库的接口增加新的方法,并且能保证对使用这个接口的老版本代码的兼容性. 下面通过一个简单的例子来深入理解下默认…
一.查看API sleep是Thread类的方法,导致此线程暂停执行指定时间,给其他线程执行机会,但是依然保持着监控状态,过了指定时间会自动恢复,调用sleep方法不会释放锁对象. 当调用sleep方法后,当前线程进入阻塞状态.目的是让出CPU给其他线程运行的机会.但是由于sleep方法不会释放锁对象,所以在一个同步代码块中调用这个方法后,线程虽然休眠了,但其他线程无法访问它的锁对象.这是因为sleep方法拥有CPU的执行权,它可以自动醒来无需唤醒.而当sleep()结束指定休眠时间后,这个线程…
首先我们中会有一些常用的meta标签,如下: <!--防止手机中网页放大和缩小--> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" /> 备注:width 设置viewport宽度,为一个正整数,或字符串‘device-width’ height 设置viewport高度,一般设置了宽…