這兩個術語總是困在我的腦海裏。它們在邏輯上是相同的還是完全不同的?例如,在Java書:介紹編程梁啓超,他說:「等同」與「等於」(或「絕對等於」)相同嗎?
您可以使用一個通用類不指定像 這樣一個具體的類型:
GenericStack stack = new GenericStack(); // raw type
這是大致相當於到
GenericStack<Object> stack = new GenericStack<Object>();
這兩個術語總是困在我的腦海裏。它們在邏輯上是相同的還是完全不同的?例如,在Java書:介紹編程梁啓超,他說:「等同」與「等於」(或「絕對等於」)相同嗎?
您可以使用一個通用類不指定像 這樣一個具體的類型:
GenericStack stack = new GenericStack(); // raw type
這是大致相當於到
GenericStack<Object> stack = new GenericStack<Object>();
有很多層次的平等。通常它們被指定爲諸如「相等」或「等同」的詞。這些詞的意思完全取決於上下文,但通常平等意味着等價,而不是相反。
例如,代碼一個和乙給予兩片,我們可以說,一個和乙都是平等的,如果他們包括一模一樣的人物,說他們是等價的,如果我們可以始終替換A by B,反之亦然,而不改變程序的行爲。如果我們這樣做,
int i;
i = 10;
和
int i = 10;
是不相等的,但相等的。
您報價中的兩個代碼片段被作者稱爲「大致相當」。 「粗略」這個詞表明它們根本不相同。事實上:
GenericStack stack = new GenericStack();
GenericStack<String> stack2 = stack;
編譯(含警告),而
GenericStack<Object> stack = new GenericStack<Object>();
GenericStack<String> stack2 = stack;
沒有。
作者的意思是「粗略等價」,原始類型在許多(但不是全部)情況下的行爲類似於GenericStack<Object>
。特別是,您可以放入任何對象。