gpt4 book ai didi

casting - 整数类型转换如何在 Java 互操作中工作?

转载 作者:行者123 更新时间:2023-12-04 18:10:03 25 4
gpt4 key购买 nike

public class Hello {
public static void test(int i) {
System.out.println("int");
}

public static void test(long l) {
System.out.println("long");
}
}


user=> (def foo 1)
#'user/foo

user=> (type foo)
java.lang.Long

user=> (Hello/test 1)
long
nil

user=> (Hello/test foo)
int
nil

user=> (Integer. 1)
1

user=> (Integer. foo)
1

user=> (Short. 1)
IllegalArgumentException No matching ctor found for class java.lang.Short clojure.lang.Reflector.invokeConstructor (Reflector.java:183)

我想不出规则。

最佳答案

简而言之,Clojure 没有与 Java 相同的重载行为。它是一种不同的语言(在 JVM 上运行),有自己的一套规则。因此,如果您定义一个方法 test(short s) 它将起作用,因为您有一个特定的匹配方法签名,但 Clojure 编译器不会以其他方式对“最接近”方法进行扩展转换。

有关链接的更完整讨论,请参阅我对这个问题的回答: Clojure overloaded method resolution for Longs

关于casting - 整数类型转换如何在 Java 互操作中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16042481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com