Silentdoer

导航

随笔分类 -  通用程序语言知识

如逆变协变
接口实现多态,本质上是接口方法实现的多态
摘要:比如接口: interface Fly { void name(); void kkk(); } Fly f = subObj; // 其实多态发生在这里,f会找到其真实类型,即subObj的真实类型 // 然后去找真实类型里是否实现了void name()这个方法,没有找到则再找subObject 阅读全文

posted @ 2023-12-10 18:18 Silentdoer 阅读(33) 评论(0) 推荐(0)

类型的子类其实应该叫子集更合适
摘要:而子集是针对类型而言的,比如A extends B,那么A是B的子集; 注意,这里是A类型是B类型的子集,而不是A类型对象是B类型对象的子集; 而A类型是B类型的子集,表示 B类型 比 A类型 能承载的对象 更广; 所以int是long类型的子集,因为long类型 比 int类型 能承载的对象 更广 阅读全文

posted @ 2023-12-06 22:45 Silentdoer 阅读(38) 评论(0) 推荐(0)

试着设计一个自己的语言
摘要:1.最重要的一点是一致性(初版本先用自然语言的形式设计语法) 2.优雅(先实现一版,后续改进) 3.静态类型 4.自然语言的语法,且容易转换为中文表述 5.可扩展,即初期肯定不会实现很多功能,后面要加的功能不能加上来和现有的设计不一致 大概设想: 注释和java的保持一致,但是支持 /* * 这种方 阅读全文

posted @ 2023-12-02 11:14 Silentdoer 阅读(37) 评论(0) 推荐(0)

常量和枚举的区别
摘要:常量和枚举最大的不同是,枚举是可以穷举的“常量”,比如性别,只有那几种; 而常量则是可以有无限多种,一般是用来处理魔法值的,让魔法值限定在某个类里,比如错误通知内容,短信通知内容,正则pattern内容等比较没有规范的值。 还有一点就是有很多语言枚举的值可以是复杂对象(即枚举有自定义字段,比如jav 阅读全文

posted @ 2022-11-29 17:32 Silentdoer 阅读(284) 评论(0) 推荐(0)

逆变协变的再理解
摘要:一、逆变协变是只针对于有泛型的地方,如泛型类,泛型委托(函数类型变量) 如delegate void Function<in T>(T t); class Foo<out T> {...} 二、逆变协变这个概念可以先不管,优先看in和out关键字,in和out都是修饰的泛型类型T(当然也可以叫其他的 阅读全文

posted @ 2021-09-02 11:21 Silentdoer 阅读(82) 评论(0) 推荐(0)