【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。

上一篇 下一篇

猜你喜欢

热点阅读