Java基础知识总结(30)

注解

获取注解中的值
复制代码
/**
 * 自定义注解
 */
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno {
​
    String value() default "admin";
//    String value();
//    int age();
}
​
//若注解属性没有给定属性值,那么需要在使用时给定属性值
//@MyAnno(value = "test",age = 18)
//如果注解中有且只有一个注解,并且属性名称叫做value,使用注解是可以不写属性名称的
@MyAnno("test")
public class Test {
​
}
​
/**
 * 获取注解中的值
 */
public class GetAnnoValueDemo {
    public static void main(String[] args) {
​
        Class<Test> clazz = Test.class;
        MyAnno myAnno = clazz.getDeclaredAnnotation(MyAnno.class);
        System.out.println(myAnno.value());
​
    }
}

Lambda

Lambda表达式构成
  1. 形参列表:Java编译器可以自动推断参数类型,因此可以省略参数的数据类型,其次,如果参数列表只有1个参数时,小括号可以省略

  2. 箭头函数:->必须有横线和大于号组成

  3. 代码块。如果代码块只包含一条语句,Lambda表达式允许省略代码块的花括号。

示例:

复制代码
@FunctionalInterface
public interface MyConsumer {
​
    void test();
    private void test2(){
​
    }
    static void test3(){
​
    }
    static void test4(){
    }
    default void test5(){
        System.out.println(50);
    }
}
​
public class MyConsumerTest {
    public void consumer(MyConsumer consumer){
        consumer.test();
        System.out.println("执行MyConsumerTest中的consumer方法");
    }
}
​
/**
 * Lambda表达式练习
 */
public class LambdaDemo {
    public static void main(String[] args) {
        //创建不可变集合
        List<String> list = List.of("张麻子","师爷","黄老爷");
        list.forEach((t)-> System.out.println(t));
        MyConsumerTest myConsumerTest = new MyConsumerTest();
        myConsumerTest.consumer(()->{
            System.out.println("执行Lambda表达式");
        });
        MyConsumer myConsumer = ()->{
            System.out.println("执行Lambda表达式");
        };
        myConsumer.test();
//        MyConsumer myConsumer = new MyConsumer() {
//            @Override
//            public void test() {
//                test5();
//            }
//        };
        myConsumer.test5();
    }
}

注意事项:

  1. Lambda 表达式的目标类型必须是明确的函数式接口。

  2. Lambda 表达式只能为函数式接口创建对象。Lambda 表达式只能实现一个方法,因此它只能为
只有一个抽象方法的接口(函数式接口)创建对象。

相关推荐
xiaoye-duck4 分钟前
C++ string 类使用超全攻略(下):修改、查找、获取及常见实用接口深度解析
开发语言·c++·stl
Coder_Boy_6 分钟前
基于SpringAI的在线考试系统-考试管理功能布局+交互优化方案
java·数据库·人工智能·spring boot·交互·ddd·tdd
Tao____13 分钟前
可以本地部署的物联网平台
java·开发语言·物联网·mqtt·低代码
码界奇点14 分钟前
基于DDD与CQRS的Java企业级应用框架设计与实现
java·开发语言·c++·毕业设计·源代码管理
柏林以东_15 分钟前
线程安全的数据集合
java·开发语言·安全
喵喵喵小鱼16 分钟前
arcgis JavaScript api实现同时展示多个撒点气泡
开发语言·javascript·arcgis
进阶的猿猴17 分钟前
java中实现markdown转为pdf
java·pdf·markdown
fengfuyao98517 分钟前
基于MATLAB的螺旋锥齿轮齿面接触分析(TCA)实现
开发语言·matlab
sunnyday042618 分钟前
Nginx与Spring Cloud Gateway QPS统计全攻略
java·spring boot·后端·nginx
海南java第二人21 分钟前
Spring Boot全局异常处理终极指南:打造优雅的API错误响应体系
java·spring boot·后端