在Java中可以这样做:
Class packageName1.foo extends packageName2.foo { ... ?
foo == foo。
这意味着,您可以简单地更改导入的包的名称,以不同的方式完成某些操作(不更改每个对接口名称的引用的类型)。
答案 0 :(得分:6)
你可以这样做:
package some.package.name;
class Foo extends some.other.package.Foo { ... }
但是,我不建议这样做,因为它可能会导致代码不太清晰,并且会鼓励编程错误。更好的方法是将常用功能抽象到接口中,然后编写不同的实现类:
class FooImpl implements Foo { ... }
class OtherFooImpl implements Foo { ...}
然后你会像这样使用它,在其他地方使用其他代码:
...
Foo myFoo = new FooImpl();
// use myFoo
...
如果你想改变实现类,那么你只需改变它的实例化方式:
...
Foo myFoo = new OtherFooImpl();
// use myFoo
...
这是Java中比你提出的更常见的做法。
答案 1 :(得分:5)
包是完全限定类名的一部分。使用“短名称”实际上只是语法糖。
这也意味着“更改导入包的名称”与更改每个引用的类型是一回事,它只发生在源文件中的不同位置 - 如果你考虑一下数量肯定会更方便你需要改变的地方,但这是一个好的IDE可以自动为你做的事情。另一方面,具有相同短名称的不同类可能会导致混淆。