java - Java 强制转换为 long 而不是使用正确类型的 varargs 参数的原因是什么?
问题描述
我有一个带参数的方法,(byte... a)
并用(long a, long b)
. 使用两个字节调用该方法会将其强制转换为,long
而不是使用提供(byte... a)
的具有正确类型的方法。我希望它使用正确类型的方法而不是强制转换它。我的问题是什么让 Java 选择这个模棱两可的情况long
?byte
public static void main(String[] args) {
byte b = 3;
foo(b);
foo(b,b);
foo(b,b,b);
}
static void foo(byte... a) {
for(byte elem:a) {
System.out.print(elem);
}
System.out.println();
}
static void foo(long a, long b) {
System.out.println("Java casts these as longs");
}
这个的输出是
3
Java casts these as longs
333
解决方案
推荐阅读
- javascript - 如何调用多个 fetch API
- javascript - 在哪里可以找到 EJS-Lint 输出,它应该是什么样的?
- r - 如何删除 ggplot2 填充类别中的模式?
- java - Java 代码中的 Kotlin List 与 java.util.List 泛型类型
- python - 为什么在使用带有 urllib3 的 HTTPS 代理时看到 InvalidProxyConfigurationWarning?
- android - 如何从 Firestore 地图字段中添加/删除?
- c# - Xamarin.Forms - iOS RegisteredForRemoteNotifications 没有被调用
- xml - 使用 DTD 可以指定元素出现的确切数量吗?
- fusionauth - 如何限制用户登录/身份验证访问单个租户中的特定应用程序?
- javascript - 如何从 NodeJS 中的 blob 中获取 WAV 文件