假设我有这样的代码:
import java.util.Date;
import my.own.Date;
class Test{
public static void main(String [] args){
// I want to choose my.own.Date here. How?
..
// I want to choose util.Date here. How ?
}
}
我应该是完全限定的类名吗?我能把进口报表处理掉吗?这种情况在现实编程中常见吗?
11条答案
按热度按时间p1iqtdky1#
您可以省略import语句并使用整个路径引用它们。如:
但我要说的是,使用两个同名的类和一个相似的函数通常不是最好的主意,除非你能真正弄清楚哪个是哪个。
fjaof16o2#
使用完全限定名,而不是导入类。
例如
xu3bshqb3#
是的,当您导入具有相同简单名称的类时,必须通过它们的完全限定类名来引用它们。我会保留import语句,因为它让其他开发人员在使用文件时能够感觉到文件中的内容。
vnzz0bqm4#
另一种方法是将其子类化:
然后在包含java.util.date的包中导入my.own.fqndate。
eni9jsuy5#
如果您有自己的日期类,则应该将其与内置日期类区分开来。i、 你为什么要创造你自己的。像immutabledate、betterdate或nanodate之类的东西,甚至mydate都会指出为什么您有自己的date类。在这种情况下,它们将具有唯一的名称。
gr8qqesn6#
您可以使用import导入其中一个。对于所有其他类似的类,需要指定完全限定的类名。否则会出现编译错误。
如:
ufj5ltwl7#
这种情况在现实编程中并不常见,但也并不奇怪。有时,不同包中的两个类具有相同的名称,我们需要这两个类。
如果两个类具有相同的名称,那么两个类都将包含相同的功能,我们应该只选择其中一个,这不是强制性的。
如果我们两者都需要的话,那么使用它们也没有坏处。这也是一个不错的编程想法。
但我们应该使用类的完全限定名(具有相同名称的类),以便清楚地表明我们也在引用哪个类。
:)
hgqdbh6s8#
例如,我在将一个类Map到另一个类时遇到了这个问题(例如切换到一组新的类来表示person数据)。在这一点上,您需要两个类,因为这就是代码的全部要点——将一个Map到另一个。而且在这两个地方都不能重命名类(同样,任务是Map,而不是改变其他人所做的)。
完全合格是一种方法。似乎不能同时包含这两个import语句,因为java担心“person”的含义。
v64noz0r9#
如果确实希望或需要从两个不同的包中使用相同的类名,则有两个选项:
1-选择一个用于导入并使用另一个的完全限定类名:
2-始终使用完全限定的类名:
fnvucqvd10#
我只是有同样的问题,我所做的,我安排了顺序库,例如有java.lang.nullpointerexception和javacard.lang.nullpointerexception。我将第一个作为默认库,如果需要使用另一个,可以显式指定完整的限定类名。
eivnm1vs11#
使用相同名称调用类时,必须显式指定从中调用类的包。
你可以这样做:
输出: