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

相关推荐
龙谷情Sinoam几秒前
扩展若依@Excel注解,使其对字段的控制是否导出更加便捷
java
2401_891957312 分钟前
list的一些特性(C++)
开发语言·c++
二十雨辰12 分钟前
[尚庭公寓]07-Knife快速入门
java·开发语言·spring
Python大数据分析@14 分钟前
Origin、MATLAB、Python 用于科研作图,哪个最好?
开发语言·python·matlab
掉鱼的猫23 分钟前
Java MCP 实战:构建跨进程与远程的工具服务
java·openai·mcp
编程零零七41 分钟前
Python巩固训练——第一天练习题
开发语言·python·python基础·python学习·python练习题
我爱Jack1 小时前
时间与空间复杂度详解:算法效率的度量衡
java·开发语言·算法
米饭「」1 小时前
C++AVL树
java·开发语言·c++
Zonda要好好学习1 小时前
Python入门Day4
java·网络·python
SimonKing1 小时前
告别传统读写!RandomAccessFile让你的Java程序快人一步
java·后端·程序员