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

Dam*_*ian 1 java

在Java中可以这样做:

Class packageName1.foo extends packageName2.foo { ...  ?
Run Code Online (Sandbox Code Playgroud)

哪里有foo == foo.

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

Mat*_*all 6

你可以这样做:

package some.package.name;

class Foo extends some.other.package.Foo { ... }
Run Code Online (Sandbox Code Playgroud)

但是,我不建议这样做,因为它可能会导致代码不太清晰,并且会鼓励编程错误.执行此类操作的更好方法是将常用功能抽象到接口中,然后编写不同的实现类:

class FooImpl implements Foo { ... }

class OtherFooImpl implements Foo { ...}
Run Code Online (Sandbox Code Playgroud)

然后你会像这样使用它,在其他地方的代码中:

...
Foo myFoo = new FooImpl();
// use myFoo
...
Run Code Online (Sandbox Code Playgroud)

如果要更改实现类,则只需更改实例化的方式:

...
Foo myFoo = new OtherFooImpl();
// use myFoo
...
Run Code Online (Sandbox Code Playgroud)

这是Java中比你提出的更常见的做法.


Mic*_*rdt 5

该包是完全限定类名的一部分.使用"短名称"实际上只是语法糖.

这也意味着"更改导入包的名称"与更改每个引用的类型是一回事,它只发生在源文件中的不同位置 - 如果您考虑需要的位置数量肯定会更方便改变,但这是一个好的IDE可以自动为你做的事情.另一方面,具有相同短名称的不同类可能导致混淆.