在fastutil
库中有IntArrayList
一个类,该类具有带有以下Java签名的方法:
public void push(Integer o)
从科特林看来,这是
push(o: Int)
是否有特定原因Int
而不是平台类型Int!
?
我希望push(o:Int!)
至少是因为在具有Kotlin源的项目中,在Java源中定义的具有相同签名的方法具有Int!
从Kotlin中看到的参数类型(甚至在不同的模块中定义,甚至从该模块的jar中导入!)。
同样,所描述的行为也导致push(Integer o)
与push(int o)
(具有相同类的)Int
合法合法的参数发生冲突-
它们都被视为push(o: Int)
。如果有Int!
for Integer
,那么就不会有冲突(我也尝试在代码中定义这对方法-
仍然可以按我期望的方式工作,有Int!
)。
Kotlin版本是1.0.2
。
Gradle的依赖关系fastutil
:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'
我怀疑这是一个Kotlin编译器错误。这里的问题是在html" target="_blank">接口IntStack
中实现的IntArrayList
:
interface Stack<T> {
void push(T t);
}
interface IntStack extends Stack<Integer> {
void push(int i);
}
Kotlin只能看到push(Int)
接口中的一种方法IntStack
,或者更准确地说,Kotlin错误地认为这push(int i)
是method的替代push(T t)
。
问题内容: 我想知道为什么当描述为char时indexOf方法的参数为int。 public int indexOf(int ch) http://download.oracle.com/javase/1,5.0/docs/api/java/lang/String.html#indexOf%28int%29 a]基本上,我感到困惑的是java中的int是32位,而unicode字符是16位。 b]
伙计们,我正在写一个资源管理器,它可以管理不同类型的资源。资源可以是整数或一些自定义类型。所以,我定义了这样一个接口: 此接口的实现者之一管理“int”类型的资源。因为我做不到: 我最终做了: 注意:使用了“整数”而不是“整数”。 我有一段这样的代码: 函数internalToExternal()返回“int”而不是“Integer”。 问题:1.是否有从“int”到“Integer”的自动转换?
如果我在java中有一个抽象的(或据我所知的)超类,如下所示: 我注意到,在重写这个方法时,子类可以使用自身作为返回类型,但不能使用参数: 为什么不允许这样做?我不是在寻求解决方案——我知道我可以在方法中使用< code>instanceof检查或其他方法,我更想知道为什么前者是可以接受的,而后者对编译器来说却不是。
问题内容: Go 包中的大多数输出方法都会返回,例如的方法和函数。但是,一些输出方法(例如的方法)会返回。这使得不方便实现在以下方面或不存储的中间值,并输入从将其转换到。这种差异的原因是什么? 问题答案: 复制的数据可能超过int32字节。 使用和接口,数据量受给定切片的大小限制,该切片的长度受当前体系结构的限制。
int是byte、short、int、long的默认文字,然后是为什么byte c=15被接受而不进行强制转换,但不接受方法参数。 提前谢谢你。
问题内容: 因此我正在研究的类源代码()以了解如何将转换为。似乎正在使用称为(第433行)的程序包私有方法将转换为数组。 尽管代码并不难理解,但是有多行代码使用逐位移位运算而不是简单的算术乘法/除法,例如以下几行代码: 和 我只是不明白这样做的目的,这实际上是一种优化,并且会影响算法的运行时间吗? 编辑: 换句话说,由于编译器在内部进行这种类型的优化,因此这种手动优化是否必要? 问题答案: 我不知