Java中的不合格名称

时间:2015-01-15 15:14:43

标签: java qualified-name unqualified-name

我们编程课程中的老师正在谈论"不合格的名字",但我想知道他们到底是什么。

我怀疑方法名称之类的东西是不合格的,但我不确定。

有没有人可以向我解释这个?我需要知道这一点,因为我需要解释Java看起来是一个不合格的名称。

5 个答案:

答案 0 :(得分:15)

限定名称是具有完整路径的名称,例如:

java.util.ArrayList list;

不合格的名字只是最后一部分:

import java.util.*;

ArrayList list;

该术语也适用于字段和方法。


那么,如果您可以导入类,为什么还需要使用限定名称?

当您使用两个类时,您需要它,而这些类来自不同的包,共享相同的名称。一个典型的例子是来自JDK的可笑命名的类:

java.sql.Date

偶然延伸

java.util.Date

需要引用这两个类的实例是相当普遍的,所以你需要看起来像这样的代码:

public void process(java.util.Date fromDate) {
    RowSet rows = <run query with fromDate as parameter>
    while (rows.nsxt()) {
        java.sql.Date date = rows.getDate(1);
        // code that needs date
    }
}

如果你使用两个同名类,那么至少有一个不能避免限定 - 你可以导入一个,但导入两个会产生歧义。

答案 1 :(得分:5)

Java中的限定名称包括类,接口,枚举或字段源自的特定包。

示例:java.util.ArrayList是完全限定名称。

非限定名称只是没有包信息的类,接口,枚举或字段。

示例:ArrayList

答案 2 :(得分:2)

例如,com.yourcompany.domain.Person是完全限定的类名,Person是类名或非限定类名。

答案 3 :(得分:1)

合格姓名: org.springframework.jdbc.core.JdbcTemplate
它的包名为org.springframework.jdbc.core,然后是类名JdbcTemplate

不合格名称: JdbcTemplate 它只是没有包名的类名。

例如:限定名称是您家的整个地址,不合格的名称只是您的家庭名称。

答案 4 :(得分:0)

在谈话中添加一篇尚未提及的内容(但并未直接询问,但我相信这是对话的有用建议):

Java中的所有名称都需要资格认证;然而,有些是Java的操作中不可或缺的一部分,它们被假设 - 或者,默认 - 在课堂上#34;&#34;你正在编码(或import ed)。 Liskov(2000)给出了一个很好的例子:java.lang - 包含String等对象的类。

您经常会在Java中看到不合格的名称。这通常与类或方法相对于您尝试访问它的类(相同包)的位置有关。上面,其他海报在Java中提到了packages的概念。

软件包允许您解决 - 或者更好地防止 - 命名冲突。程序中的每个包都可以复制另一个包的类名等。在这种情况下,使用完全限定名称来访问正确的类(如其他答案中所示)。您还可以导入包以避免使用其完全限定名称;但是,如果两个导​​入的类包含命名冲突,那么您将遇到一些问题。