拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 在Java 中处理同名的类

在Java 中处理同名的类

白鹭 - 2022-09-08 2331 0 2

一、简介

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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *