美文网首页
2020-07-21

2020-07-21

作者: MHLEVEL | 来源:发表于2020-07-21 19:59 被阅读0次

个人笔记,没有参考价值😈,为节约您的学习时间,请绕道查找其他资料

集合 Collection

set集合中中存放的元素是不一样的
范型的定义👇

// >> TODO 定义泛型,就是把需要的类型定义在类后面的尖括号里,然后在类里面就可以把定义好的泛型像符号一样使用
public class MyGenericClass<First, Second> {

    // >> TODO 实际上这两个引用都是Object类型的
    private First first;

    private Second second;

    public MyGenericClass(First first, Second second) {
        this.first = first;
        this.second = second;
    }

    public First getFirst()  {
        return first;
    }

    public void setFirst(First first) {
        this.first = first;
    }

    public Second getSecond() {
        return second;
    }

    public void setSecond(Second second) {
        this.second = second;
    }


    public <Another> Another getAnother(Object val) {
        return (Another) val;
    }

}

范型的协变和逆变

// >> TODO 协变语法如下,意思就是这个参数可以接受的List引用的泛型类型为Parent或者其子类
public static void extMethod(List<? extends Parent> extParam) {
}

// 下面这种写法的话,justG2Method() 方法参数的类型只能是Parent
public static void justG2Method(List<Parent> extParam) {
}

以下问题的解释为范型是类型擦除的(关于类型擦除移步Google

        List<? extends Parent> g2ListExt = null;
// >> TODO 但是使用这个带协变泛型的引用,我们无法让具体的类型满足其参数要求
        // >> TODO 是不是感觉世界观被震碎了,别着急崩坏,这都是有原因的
//        g2ListExt.add(new GrandParent());
//        g2ListExt.add(new Parent());
//        g2ListExt.add(new Children());

        // >> TODO 原因是如果 Java 允许了,那么就会造成潜在的错误
        List<Children> g3OnlyList = new ArrayList<>();
        g2ListExt = g3OnlyList;
        // >> TODO 这时候再看下一行,如果允许 add 一个Parent的对象,就代表着什么呢?
//        g2ListExt.add(new Parent());

        // >> TODO 那就代表着,原本只应该有Children或者其子类的g3OnlyList引用指向的对象,结果通过使用g2ListExt,被放进去一个Parent的实例

逆变和协变正好相反,它允许的类型为Parent 或者其父类

// >> TODO 除了协变,Java 还有逆变,语法如下
        // >> TODO 逆变和协变正好相反,允许的类型为Parent或者其父类
        List<? super Parent> g2ListSup = null;

注解 annotation,定义注解的方式如下👇

// TODO 注解可以被用在哪个/哪些元素上
@Target(ElementType.METHOD)
// TODO 注解会被留存到哪阶段
@Retention(RetentionPolicy.RUNTIME)
// TODO 以上两个元素是每个注解都必须要有的

// TODO 定义一个自己的annotation,需要@interfae,实际上这个接口会继承Annotation接口
public @interface PrimaryProperty {
    // >> TODO  annotation支持的类型有基本数据类型,Class,String,枚举,其它注解,以上类型的数组
    // TODO 可以指定缺省值
    String defaultValue() default "N/A";

    Class targetClass();

    int abc();

    String[] defaultValues();

    // TODO 注解类型的缺省值
    Override is() default @Override;

}

自定义的注解的使用示例

public class TestUseAnnotation{
//    @PrimaryProperty(defaultValue = "testbggg", targetClass = TestUseAnnotation.class,
//        abc = 9, defaultValues = {"aaa", "bbb"})
   private Object abc;

   @Deprecated
   // TODO 给annotation里的属性赋值的方式
   @PrimaryProperty(defaultValue = "testbggg", targetClass = TestUseAnnotation.class,
       abc = 9, defaultValues = {"aaa", "bbb"})
   public void test() {

   }


}

Lambda表达式 V.S. 匿名内部类

// TODO 匿名内部类版
        myList.forEach(
                new Consumer<String>() {
                    @Override
                    public void accept(String s) {
                        processString(outside + s);
                    }
                }
        );
        // TODO lambda的表达式必须能够符合接口中定义的抽象方法,从参数,到返回值,到异常,都必须匹配

        // TODO lambda 完整版 (参数) -> {代码块}
        // TODO lambda可以有返回值,使用return语句就可以,当然我们这个接口没有,我们的lambda表达式也不能有
        // TODO lambda可以使用外部数据,怎么看都和匿名内部类是一样的
        myList.forEach(
                (s) -> {  // 这个 s 在方法中就是参数
                    processString(outside + s); // 这就是方法体
                }
        );

相关文章

  • grpc 入门

    title: grpc 入门date: 2020-07-21 19:26:19 0. 前言 实习期间,公司项目使用...

  • 2020-07-24

    2020-07-21 2020-07-18 2020-07-17 记录 2020-07--20日志 成长日志第37...

  • 【D208】你有勇气吗?——写作营共读打卡第175天《被讨厌的勇

    2020-07-21,周二,晴 今天阅读《被讨厌的勇气》第一章(后部分)。 Day175《你有勇气吗?》 ——写作...

  • 阿里-高德地图面试经历

    事情发生在 2020-07-21 晚7:00 最近刚学完源码,想测试下学的怎么样,于是看了看boss职位,很幸运 ...

  • 2020-07-21

    2020-07-21 日精进打卡 姓名:彭新 宁波蓝天白云供应链管理有限公司 【日精进打卡第866天】 【知学习】...

  • 戒尿不湿日记

    2020-07-21 上海终于出梅了,这是我等了好久的良辰吉日,准备开戒尿不湿啦。 看了许多技术贴,小马桶已经跟小...

  • 20200721宽基指数估值表

    ​估值日期:2020-07-21 颜色说明: 1、红色:说明当前指数估值比较高,不建议童鞋们去购买红色背景的相关指...

  • 今日复盘(day177)-坚持

    2020-07-21 一、今日收获 每天都在坚持听课,今天分享中说到如何发圈,这位朋友也是生活中的榜样,见到她都会...

  • 跟着感觉走

    跟着感觉走,请抓住我的手~脚步越来越轻,越来越开阔~ 2020-07-21 昨晚跑步时候辉哥问我,有没有确定好自己...

  • 打造一个5亿规模的小企业,不务虚的实业你感兴趣么?

    打造一个5亿规模的小企业,不务虚的实业你感兴趣么? 原创 洞观世界 2020-07-21 14:00:18 本模型...

网友评论

      本文标题:2020-07-21

      本文链接:https://www.haomeiwen.com/subject/fsgbkktx.html