内部类的灵活运用

注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢!


:为了方便与极简化,本文中的外部类与接口我都声明在同一个文件中,与常规写法几乎无异!

在工作中我们有时候需要临时建一个JavaBean用作业务代码处理,写在外部的话很麻烦。

本文用示例说明(写法依次简化)

                普通类:声明在外部类外(即新建的一个类)

                静态内部类:声明在外部类中(当前类中)

                局部内部类:声明在函数中(当前类的函数中)

                匿名内部类:没有类名

                lambda表达式:极简化

五种方法结合实现函数式接口,讲解内部类的使用及其差别:

< 函数式接口:只拥有一个抽象方法的接口叫做函数式接口 >

package com.example.innerclass;

/**
 * 内部类(普通类、静态内部类、局部内部类、匿名内部类、lambda)
 */
public class test {
    public static void main(String[] args) {
        FunctionClass functionClass = new FunctionClass();
        functionClass.fun(" -- 普通类");

        FunctionClass2 functionClass2 = new FunctionClass2();
        functionClass2.fun(" -- 静态内部类");

        // 3. 局部内部类(如果要调用该类,必须要在声明之后调用,就像用局部变量一样)
        class FunctionClass3 implements Function {
            @Override
            public void fun(String param) {
                System.out.println("hello" + param);
            }
        }
        FunctionClass3 functionClass3 = new FunctionClass3();
        functionClass3.fun(" -- 局部内部类");

        // 4. 匿名内部类(无类名)
        Function functionClass4 = new Function(){
            @Override
            public void fun(String test) {
                System.out.println("hello" + test);
            }
        };
        functionClass4.fun(" -- 匿名内部类");

        // 5. lambda (只有一个入参时,数据类型与括号皆可省略,lambda会自动根据上下文判定:param -> System.out.println("hello" + param);)
        Function functionClass5 = (String param) -> System.out.println("hello" + param);
        functionClass5.fun(" -- lambda");
    }

    // 2. 静态内部类
    static class FunctionClass2 implements Function{
        @Override
        public void fun(String param) {
            System.out.println("hello" + param);
        }
    }
}

// 函数式接口
interface Function {
    void fun(String param);
}

// 1. 普通类实现接口的方式
class FunctionClass implements Function {

    @Override
    public void fun(String param) {
        System.out.println("hello" + param);
    }
}

控制台响应:

hello -- 普通类
hello -- 静态内部类
hello -- 局部内部类
hello -- 匿名内部类
hello -- lambda

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值