我是Java的新手,我編碼只是爲了好玩,我對此很感興趣。聲明中的區別Java
Set<Employee> employees1 = new HashSet<Employee>();
HashSet<Employee> employees2 = new HashSet<Employee>();
這兩個聲明有什麼區別嗎?我的意思是像「幕後」?我在這裏尋找類似的問題,但我沒有找到任何可能的,因爲我不知道如何解釋搜索領域的問題。
我是Java的新手,我編碼只是爲了好玩,我對此很感興趣。聲明中的區別Java
Set<Employee> employees1 = new HashSet<Employee>();
HashSet<Employee> employees2 = new HashSet<Employee>();
這兩個聲明有什麼區別嗎?我的意思是像「幕後」?我在這裏尋找類似的問題,但我沒有找到任何可能的,因爲我不知道如何解釋搜索領域的問題。
Set<Employee> employees1 = new HashSet<Employee>();
通過引用變量employees1
可以調用只有那些方法,其在Set
接口中聲明,並在HashSet
覆蓋HashSet
類。
HashSet<Employee> employees2 = new HashSet<Employee>();
使用employees2
,你將能夠調用Set
接口和HashSet
類的自己的方法的重載方法(未在設置界面中聲明。)
Set
是一個接口,而HashSet
是一個其實施。
如果你的變量被聲明爲Set
,它可能有其他的實現值。 EG:
employees1 = new TreeSet<Employee>();
'Set'是一個接口。 'HashSet'是該接口的一個實現。如果你說'Set',你可以將HashSet替換爲你想要的任何其他實現(Set)(在運行時)。 – byxor
查找互連/多態。它應該爲你清理一些事情。 – DCON
使用第一個聲明的主要優點是抽象,這將使您有機會在未來將Set實現(例如SortedSet)切換。 – mulya