一、简介
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 评论