随笔分类 -  java

摘要:一、相同点 1、get和join都是用来等待获取CompletableFuture执行异步的返回 二、不同点 1、join()方法抛出的是uncheckException异常(即RuntimeException),不会强制开发者抛出 /** * Returns the result value wh 阅读全文
posted @ 2023-08-15 07:46 LCAC 阅读(3674) 评论(0) 推荐(0) 编辑
摘要:一、非对称所以调用的参数和返回值可以是不同的类型 例如:我们创建一个调用的yield参数返回值 // 模板的参数是P,返回值是R // yield对应的传入参数是R,返回值是P interface CoroutineScope<P, R> { val parameter: P? suspend fu 阅读全文
posted @ 2023-06-07 23:54 LCAC 阅读(55) 评论(0) 推荐(0) 编辑
摘要:一、要实现python的generator功能,首先要看下该generator是怎样的调用,如下的调用示例: fun testGenerator() { val generator = generator<Int> { println("generator $it") yield(10) yield 阅读全文
posted @ 2023-05-31 07:27 LCAC 阅读(69) 评论(0) 推荐(0) 编辑
摘要:kotlin中的逆变和协变跟java中的逆变和协变是类似的 如下是kotlin跟java的应对关系 从上面可以看出:模板中out T 需要T或者T的子类,in T则需要T或者T的父类;规则跟java是一样的 java和kotlin的不同点 1、Kotlin是声明处协变;而在Java中是在使用处协变 阅读全文
posted @ 2023-04-15 19:01 LCAC 阅读(46) 评论(0) 推荐(0) 编辑
摘要:一、协变和逆变的概念 协变:模板中赋值给A的是A或者A的子类。比如:List<? extends A> listA = List<ChildA>() 即:ChildA 可能是A或者A的子类 逆变:模板中赋值给A的是A或者A的父类。比如:List<? super A> listA = List<Par 阅读全文
posted @ 2023-04-15 17:22 LCAC 阅读(1161) 评论(0) 推荐(0) 编辑
摘要:一、一个函数防止多线程重入的方法可以使用排他锁 这里有个bank函数,和对应的调用函数 class Bank { private final double[] accounts; private ReentrantLock bankLock = new ReentrantLock(); public 阅读全文
posted @ 2023-03-02 07:23 LCAC 阅读(154) 评论(0) 推荐(0) 编辑
摘要:import kotlinx.coroutines.* import java.net.URL suspend fun fetchResponse(code: Int, delay: Int) = coroutineScope { val deferred: Deferred<String?> = 阅读全文
posted @ 2022-11-24 00:17 LCAC 阅读(153) 评论(0) 推荐(0) 编辑
摘要:关于协程的父子关系,从如下一段代码的运行结果来分析 import kotlinx.coroutines.* import java.net.URL suspend fun fetchResponse(code: Int, delay: Int) = coroutineScope { try { va 阅读全文
posted @ 2022-11-23 09:15 LCAC 阅读(204) 评论(0) 推荐(0) 编辑
摘要:一、关于协程库的导入 1、使用下载包的方式 可以到该网站下载https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core对应的协程库 本地调试运行可以使用类似命令:kotlinc -classpath 阅读全文
posted @ 2022-11-21 07:40 LCAC 阅读(418) 评论(0) 推荐(0) 编辑
摘要:一、关于运算符的重载 kotlin的运算符重载和c++的运算符重载比较类似,使用operator的方式: operator fun xxx的方式 比如重载类Complex的乘号 data class Complex(val real: Int, val imaginary: Int) { opera 阅读全文
posted @ 2022-11-15 00:00 LCAC 阅读(33) 评论(0) 推荐(0) 编辑
摘要:一、内部的迭代函数 filter(e -> 返回true和false) 判断数值是否加入新的数组map(e -> 返回调整e之后的值) 对数组中每个数进行调整,并存入新的数组reduce(total, e -> 返回新的total) total是统计结果,e是当前遍历到参数;返回新的total作为数 阅读全文
posted @ 2022-11-13 17:18 LCAC 阅读(104) 评论(0) 推荐(0) 编辑
摘要:一、lambda表达式的语法 {parameter list -> body} kotlin和java的lambda表达式的语法存在一定程度的差异: 1、kotlin在通常的情况下不允许有return语句,而java则可以有零个或者多个return语句 2、kotlin有隐式的参数it:fun is 阅读全文
posted @ 2022-11-10 23:51 LCAC 阅读(88) 评论(0) 推荐(0) 编辑
摘要:我们经常使用的其实是继承,但是相对于继承使用委托的耦合性会更低。 使用继承则代码相对会比较简单,但是使用委托则会比较复杂 一、假设有interface Worker、class JavaProgrammer: Worker、class CShapeProgrammer: Worker三个类;然后新增 阅读全文
posted @ 2022-11-10 00:16 LCAC 阅读(94) 评论(0) 推荐(0) 编辑
摘要:一、前提 1、如下图是组件的继承关系 可以看到所有的组件都继承Component 2、绘制函数 界面显示或者窗口大小改变的时候,都会调用protected void paintComponent(Graphics graphics)函数进行绘制对应的每个组件,并且参数只有一个是Graphics 3、 阅读全文
posted @ 2022-10-12 07:05 LCAC 阅读(289) 评论(0) 推荐(0) 编辑
摘要:一、集合与数组的转换 1、初始化一个固定大小的List :List<Integer> ali = Arrays.asList(1,2,3,4,5); 该ali内容可以修改,但是大小不可变 如果要创建一个可变大小的List的话则可以如此表示:List<Integer> li = new ArrayLi 阅读全文
posted @ 2022-10-11 07:33 LCAC 阅读(86) 评论(0) 推荐(0) 编辑
摘要:一、需要通配符的原因 假设类Manager继承Employee,并且有如下的范型Pair类 class Pair<T> { private T first; private T second; public Pair() { first = null; second = null; } public 阅读全文
posted @ 2022-10-07 22:26 LCAC 阅读(147) 评论(0) 推荐(0) 编辑
摘要:一、范型代码的格式 可以是范型类也可以范型方法 1、范型类 class ClassName<T, ....> { ......ClassName的属性和方法 } 如上跟普通的类相比,增加了<T, ....> 如下是一个简单的Pair的例子,增加了T的类型,则Pair的first和second可以是创 阅读全文
posted @ 2022-10-07 15:07 LCAC 阅读(175) 评论(0) 推荐(0) 编辑
摘要:一、内部类的说明 1、在类的内部再构建一个类,则类内部构建的这个累即为内部类 2、内部类可以访问外部类的private属性和方法 class TalkingClock { private int interval; private boolean beep; public TalkingClock( 阅读全文
posted @ 2022-09-29 07:32 LCAC 阅读(19) 评论(0) 推荐(0) 编辑
摘要:一、lambda表达式的语法 假设要计算first.length() - second.length且传入的参数是first和second,那么我们的lambda表达式可以这么写 1、(String first, String second) -> {return first.length() - 阅读全文
posted @ 2022-09-28 23:16 LCAC 阅读(93) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示