2017-02-09 89 views
3

我有以下Vec2iclass and primary constructor一個科特林數學LIB:爲什麼Netbeans的抱怨歧義而代替的IntelliJ不

data class Vec2i(override var x: Int, override var y: Int) : Vec2t<Int>() 

然後Vec2i還,幾個次級構造中,其中一個應該是攔截所有另一個number types

constructor(x: Number, y: Number) : this(x.i, y.i) 

Idea下的所有東西都編譯並運行。我用一個單獨的java項目測試了工件。

如果我切換IDE,相同的工件不會在java項目中運行,Netbeans會抱怨兩者之間的不明確性。

爲什麼?

編輯:從一些進一步的分析,原來Netbeans抱怨,因爲其中一個座標是int,其他Integer。 試穿理念一樣,它說:

無法解決構造

那麼,爲什麼調用帶有costructor (int, int)(Integer, Integer)是好的,但(int, Integer)不解決,次級構造和挑釁歧義?

+0

http://stackoverflow.com/questions/564/what-is-the-difference-between-an-int-and-an-integer-in-java-and-c – hellyale

+0

呃,清楚,如果你想要回答,我會接受 – elect

+0

不確定這是否足夠答案,我只是認爲這會有所幫助。 – hellyale

回答

1

oracles documentation我們看到Integer是一個包含int的對象。

int是原始類型,而Integer是一個對象。

你有允許傳遞一對任何類型的構造函數,但是當你傳遞構造函數都不知道該怎麼做。

欲瞭解更多信息this question有一個很好的細分。

相關問題