为什么Netbeans抱怨模糊,而Intellij却没有
我有一个kotlin数学库与以下Vec2i
类和主要构造函数 :
data class Vec2i(override var x: Int, override var y: Int) : Vec2t<Int>()
然后, Vec2i
也在几个次要的构造函数中设计了一个截取所有其他数字类型的函数:
constructor(x: Number, y: Number) : this(xi, yi)
在Idea下编译并运行。 我用一个单独的java项目测试了工件。
如果我切换IDE,相同的工件不会在java项目中运行,Netbeans会抱怨两者之间的不明确性。
为什么?
编辑:从一些进一步的分析,原来Netbeans抱怨,因为其中一个坐标是int
,另一个Integer
。 想法也一样,它说:
无法解析构造函数
那么,为什么用(int, int)
或(Integer, Integer)
调用一个构造函数是好的,但是(int, Integer)
没有解析到二级构造函数中,并引起歧义?
在oracles文档中,我们看到Integer
是一个保存int
的对象。
int
是一个原始类型,而Integer
是一个对象。
你已经允许构造函数传递一对类型,但是当你传递构造函数的时候不知道该怎么做。
有关更多信息, 这个问题有一个很好的细分。