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

相关推荐
m0_733612215 分钟前
C++20概念(Concepts)入门指南
开发语言·c++·算法
编码忘我8 分钟前
java多线程安全集合
java
悟空码字13 分钟前
滑块拼图验证:SpringBoot完整实现+轨迹验证+Redis分布式方案
java·spring boot·后端
编码忘我14 分钟前
java类加载器及tomcat为什么不用双亲委派
java
luffy545928 分钟前
Rust语言入门-变量篇
开发语言·后端·rust
2301_8073671934 分钟前
C++中的模板方法模式
开发语言·c++·算法
weixin_5375904535 分钟前
《C程序语言设计》练习答案(练习1-3)
c语言·开发语言
m0_459252461 小时前
fastadmin动态渲染统计信息
开发语言·前端·javascript·php
MegaDataFlowers1 小时前
快速上手Spring
java·后端·spring
小江的记录本1 小时前
【MyBatis-Plus】Spring Boot + MyBatis-Plus 进行各种数据库操作(附完整 CRUD 项目代码示例)
java·前端·数据库·spring boot·后端·sql·mybatis