在 Java 中處理同名的類
瀏覽人數:449最近更新:
一、簡介
Java 中的類命名遵循稱為大駝峰語法的國際慣例,就像主要的編程語言一樣。然而,當涉及到處理同名的類時,就有了挑戰。
自 1998 年 JDK 的早期發布以來,一直存在關於如何解決這種不尋常情況的爭論。這是JDK-4194542 ,這是關於這個主題的第一個打開的錯誤,從那時起,JDK 開發團隊的建議是使用完全限定的類名。儘管如此,JDK 並沒有計劃在短期內提供任何允許這種用法的功能。
最近,在 2019 年 8 月,Java 開發者社區提出了一項關於如何解決這種情況的新提案 ( JEP ),並獲得了全球 Java 開發者的更多支持。
在本教程中,我們將討論處理同名類的策略和建議。
2. 定義類
首先,讓我們在自定義包com.baeldung.date.
創建一個名為Date
的類。
package com.baeldung.date;
public class Date {
private long currentTimeMillis;
public Date() {
this(System.currentTimeMillis());
}
public Date(long currentTimeMillis) {
this.currentTimeMillis = currentTimeMillis;
}
public long getTime() {
return currentTimeMillis;
}
}
3. 完全限定的類名
當這種類型的使用被隔離且不經常重複時,我們將使用這種方法來避免衝突。然而,使用完全限定名稱通常被認為是一種糟糕的風格。
讓我們看看如何使用它,特別是如果包名稱簡短且具有描述性,可以使代碼更具表現力,從而減少混淆並增加可讀性。
另一方面,當內部使用的對像是太大的類或方法時,它有助於調試:
public class DateUnitTest {
@Test
public void whenUsingFullyQualifiedClassNames() {
java.util.Date javaDate = new java.util.Date();
com.baeldung.date.Date baeldungDate = new com.baeldung.date.Date(javaDate.getTime());
Assert.assertEquals(javaDate.getTime(), baeldungDate.getTime());
}
}
4.導入最常用的一個
我們導入我們最常用的一個,並利用一個完整的類路徑使用最少的一個,因為這是 Java 開發人員的常用技術和最佳實踐:
import java.util.Date;
public class DateUnitTest {
@Test
public void whenImportTheMostUsedOne() {
Date javaDate = new Date();
com.baeldung.date.Date baeldungDate = new com.baeldung.date.Date(javaDate.getTime());
Assert.assertEquals(javaDate.getTime(), baeldungDate.getTime());
}
}
5. 結論
在本文中,我們根據特定情況說明了使用同名類的兩種可能方法,並觀察了它們之間的主要區別。
與往常一樣,可以在 GitHub 上找到本文的完整代碼示例。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議