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 表达式只能实现一个方法,因此它只能为
只有一个抽象方法的接口(函数式接口)创建对象。

相关推荐
烤麻辣烫几秒前
Java开发手册规则精选
java·开发语言·学习
小宇的天下2 分钟前
Virtuoso 中的tech file 详细说明
java·服务器·前端
WX-bisheyuange7 分钟前
基于SpringBoot的诊疗预约平台
java·spring boot·后端·毕业设计
SimonKing9 分钟前
基于Netty的WebSocket客户端
java·后端·程序员
DYS_房东的猫11 分钟前
《 C++ 零基础入门教程》第8章:多线程与并发编程 —— 让程序“同时做多件事”
开发语言·c++·算法
ekkcole14 分钟前
java实现对excel模版填充保存到本地后合并单元格并通过网络下载
java·开发语言·excel
Zoey的笔记本17 分钟前
「软件开发缺陷管理工具」的闭环追踪设计与自动化集成架构
java·服务器·前端
setary030124 分钟前
c++泛型编程之Typelists
开发语言·c++
极客先躯24 分钟前
高级java每日一道面试题-2025年5月09日-基础篇[协议-注解-缓存]-JCache(JSR-107)是什么?它的主要目标是什么?
java·spring·缓存
u01040583624 分钟前
Java应用的链路追踪:实现分布式跟踪
java·开发语言·分布式