java导入中的名称冲突
|
除非我们 change the compiler,Java错过了导入X作为Y语法,这在我的情况下会很有用:在这个时刻我正在研究一个项目,它有多个具有相同名称的类,但属于不同的包. 我想有类似的东西 import com.very.long.prefix.bar.Foo as BarFoo
import org.other.very.long.prefix.baz.Foo as BazFoo
class X {
BarFoo a;
BazFoo b;
...
}
相反,我完成了类似的事情 class X {
com.very.long.prefix.bar.Foo a;
org.other.very.long.prefix.baz.Foo b;
...
}
这看起来非常有害,但在我的具体情况下,我需要使用水平滚动来浏览我的源代码,并且这样可以使程序更糟糕,这已经是一个混乱. 根据您的经验,这种情况下的最佳做法是什么? 解决方法我觉得你的痛苦,无论你使用哪种解决方案,都有两个同名的类很容易让人困惑.解决方法有几种解决方法: >如果这是您的代码,只需重命名其中一个(或两者) private BarFoo extends com.very.long.prefix.bar.Foo{
//nothing,except possibly constructor wrappers
}
private BazFoo extends com.very.long.prefix.bar.Foo{
//nothing,except possibly constructor wrappers
}
class X {
BarFoo a;
BazFoo b;
//...
}
但是有一些缺点: >你必须重新定义构造函数 您可以通过包装Foo类而不是扩展它们来解决这些缺点,例如: private BarFoo {
public com.very.long.prefix.bar.Foo realFoo;
}
private BazFoo extends com.very.long.prefix.bar.Foo{
public com.very.long.prefix.baz.Foo realFoo;
}
class X {
BarFoo a;
BazFoo b;
//now if you need to pass them
someMethodThatTakesBazFoo(b.realFoo);
}
选择最简单的解决方案并祝你好运! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
