在Java中可以这样做:
Class packageName1.foo extends packageName2.foo { ... ?
Run Code Online (Sandbox Code Playgroud)
哪里有foo == foo.
这意味着,您可以简单地更改导入的包的名称,以不同的方式完成某些操作(不更改每个对接口名称的引用的类型).
你可以这样做:
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中比你提出的更常见的做法.
该包是完全限定类名的一部分.使用"短名称"实际上只是语法糖.
这也意味着"更改导入包的名称"与更改每个引用的类型是一回事,它只发生在源文件中的不同位置 - 如果您考虑需要的位置数量肯定会更方便改变,但这是一个好的IDE可以自动为你做的事情.另一方面,具有相同短名称的不同类可能导致混淆.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |