Forwarded from dnaugsuz
Qt C++ 里面各种指针弄得我都感觉不到和 Android 里用 Java 有啥区别了,虽然我没用智能指针(
shared_ptr weak_ptr 模板 template 什么的)Forwarded from Deleted Account
kotlin 的泛型比原来的 java 的舒服点(跑
Forwarded from dnaugsuz
这到是,尤其是 subtyping (类型系统::子类型特性)的 variance(形变性)给了基于 PECS(Producer-
extends, Consumer-super)的 out / in 泛型约束(软?)关键字Forwarded from Deleted Account
不 普通 Java 换 kotlin
Forwarded from Deleted Account
之前北京 Jetbrains 大会被安利了一天 Kotlin
Forwarded from dnaugsuz
你们 Kotlin 大会传教了泛型擦除没有... 不是很懂这个消息
Forwarded from dnaugsuz
我一直以为 Java 8 的泛型都是虚的伪泛型... 只有编译期存在,检查一下就完了
然后运行期的
然后运行期的
checkcast 强制转型指令还是少不了有没有了解 Java 这方面的大佬给普及一下知识,我意向是他弄错了,这个问题和泛型擦除无关,Java 8 本来就只有虚泛型,反射的元数据另一回事
羽毛的小白板
比如这一个地方就是该书作者 SB 的一处。这里表明他分不清什么是源代码和编译结果,也似乎认为所有语言都是脚本语言,而且不同的语言还能杂交 https://t.me/dsuse/8287
emmm 有点不太懂,你说的第一条我看了一会找不到具体的条目所以无法判断
第二条嘛,脚本语言大概就是说... VB 这种会把 Long 看成什么... 的?
不同语言杂交嘛... 我觉得他的意思大概是 FCL(CLR 的 std, CLR 就是 Common Language Runtime)
开始只考虑 C# 语言设计了,有些程序员在 FCL 里创建其他的 CLR 语言(e.g. 基于 DLR 的 IronPython)里不自然的方法名称(如
CLR 本来就是『杂交』语言运行时嘛... 虽说 CLR 语言不是一个语言,不像某些语言里还能内联其他语言代码一样
但是... 他们都在这个 CLR 共同运行时里运行,所以一些东西比如各种 CTS/CLI 类型是可以共享的,他说的杂交大概是这个意思
e.g. 我们有个 VB .NET 的伪代码
第二条嘛,脚本语言大概就是说... VB 这种会把 Long 看成什么... 的?
不同语言杂交嘛... 我觉得他的意思大概是 FCL(CLR 的 std, CLR 就是 Common Language Runtime)
开始只考虑 C# 语言设计了,有些程序员在 FCL 里创建其他的 CLR 语言(e.g. 基于 DLR 的 IronPython)里不自然的方法名称(如
GetLongLength() 而不是 GetInt64Length())CLR 本来就是『杂交』语言运行时嘛... 虽说 CLR 语言不是一个语言,不像某些语言里还能内联其他语言代码一样
但是... 他们都在这个 CLR 共同运行时里运行,所以一些东西比如各种 CTS/CLI 类型是可以共享的,他说的杂交大概是这个意思
e.g. 我们有个 VB .NET 的伪代码
Class FotC# 里也可以用 VB 的类型
Private Bar As Boolean = False
Sub New()
End Sub
Public Sub Baz()
If Bar Then
Console.WriteLine("Faz")
Else
Bar = True
End If
End Sub
End Class
var fot = new Fot();
fot.Baz();
fot.Baz();
Forwarded from Deleted Account
泛型擦除就是 class<T> 的 T 只在编译期检查吧
Forwarded from dnaugsuz
应该是,另外 Kotlin 有一个
refied generics 特性可以内联方法泛型参数拿到泛型的 Class<T> 反射对象这个 Java 8 就做不到inline fun <reified T> getGenericClass(klass: T) = T::class.java
dnaugsuz
应该是,另外 Kotlin 有一个 refied generics 特性可以内联方法泛型参数拿到泛型的 Class<T> 反射对象这个 Java 8 就做不到 inline fun <reified T> getGenericClass(klass: T) = T::class.java
inline fun <reified T> getGenericClass() = T::class.java
fun main(vararg args: String) = println(getGenericClass<Int>().canonicalName)