我们编程课程中的老师正在谈论"不合格的名字",但我想知道他们到底是什么。
我怀疑方法名称之类的东西是不合格的,但我不确定。
有没有人可以向我解释这个?我需要知道这一点,因为我需要解释Java看起来是一个不合格的名称。
答案 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
的概念。
软件包允许您解决 - 或者更好地防止 - 命名冲突。程序中的每个包都可以复制另一个包的类名等。在这种情况下,使用完全限定名称来访问正确的类(如其他答案中所示)。您还可以导入包以避免使用其完全限定名称;但是,如果两个导入的类包含命名冲突,那么您将遇到一些问题。