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

相关推荐
Yeats_Liao11 分钟前
Spring 框架:配置缓存管理器、注解参数与过期时间
java·spring·缓存
Yeats_Liao11 分钟前
Spring 定时任务:@Scheduled 注解四大参数解析
android·java·spring
码明11 分钟前
SpringBoot整合ssm——图书管理系统
java·spring boot·spring
某风吾起16 分钟前
Linux 消息队列的使用方法
java·linux·运维
xiao-xiang19 分钟前
jenkins-k8s pod方式动态生成slave节点
java·kubernetes·jenkins
网络风云20 分钟前
golang中的包管理-下--详解
开发语言·后端·golang
取址执行30 分钟前
Redis发布订阅
java·redis·bootstrap
小唐C++38 分钟前
C++小病毒-1.0勒索
开发语言·c++·vscode·python·算法·c#·编辑器
S-X-S43 分钟前
集成Sleuth实现链路追踪
java·开发语言·链路追踪
快乐就好ya1 小时前
xxl-job分布式定时任务
java·分布式·spring cloud·springboot