一、简介
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. 结论
在本文中,我们根据特定情况说明了使用同名类的两种可能方法,并观察了它们之间的主要区别。
0 评论