【Java梳理】内部类和匿名类,lamabda
2017-12-12 本文已影响0人
田文健
类部类是在一个类中定义的类,它可以是类的成员,也可以是在方法中定义;
package helloworld;
import java.util.function.Function;
public class OutClass {
//实例内部类
public class InnerClass {
private Integer a;
}
//静态内部类
public static class StaticInnerClass {
private Integer a;
}
//局部类
public void method(){
class LocalClass{
private Integer a;
}
LocalClass localClass = new LocalClass();
//内部类在实例方法中的实例化
InnerClass innerClass = new InnerClass();
}
//接口参数
private static void method2(Function<Integer, Integer> function){
System.out.println(function.apply(1));
}
public static void main(String[] strings){
//内部类实例化
OutClass outClass = new OutClass();
OutClass.InnerClass innerClass = outClass.new InnerClass(); //这里需要有外部类的实例实例化
OutClass.StaticInnerClass staticInnerClass = new OutClass.StaticInnerClass();
//匿名类
OutClass.method2(new Function<Integer, Integer>() {
@Override
public Integer apply(Integer integer) {
return integer + 1;
}
});
}
}
以上是关于内部类的用法。而lamabda表达式是内部类只实现接口单个方法的简化写法,比如上面匿名内使用的地方可以写成:
//匿名类
OutClass.method2(integer -> {
integer--;
return integer + 1;
});
当lamabda表达式的语句只有return那一行时,可以省略return。