在其直接祖先之后命名一个类

时间:2011-02-14 15:08:41

标签: java

在Java中可以这样做:

Class packageName1.foo extends packageName2.foo { ...  ?

foo == foo。

这意味着,您可以简单地更改导入的包的名称,以不同的方式完成某些操作(不更改每个对接口名称的引用的类型)。

2 个答案:

答案 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可以自动为你做的事情。另一方面,具有相同短名称的不同类可能会导致混淆。

相关问题