美文网首页
【Java梳理】内部类和匿名类,lamabda

【Java梳理】内部类和匿名类,lamabda

作者: 田文健 | 来源:发表于2017-12-12 10:45 被阅读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。

    相关文章

      网友评论

          本文标题:【Java梳理】内部类和匿名类,lamabda

          本文链接:https://www.haomeiwen.com/subject/zmqwvxtx.html