我有很长的java类和方法名
LONGGGGGGGGGGGGGGGClass.longggggggggggggggggggggggggMethod();
Run Code Online (Sandbox Code Playgroud)
我想将它别名为
g.m();
另一个类可以这样做吗?
Tho*_*sen 40
没有.
用一个你喜欢的名字的方法包装它.
Bil*_*l K 25
首先,您应该很少输入类名.你可能有这样的事情:
import DamnLongPackageNameThatIDontLikeTyping;
class MyCoolClass()
{
DamnLongClassNameThatIDontLikeTyping dlc=new DamnLongClassNameThatIDontLikeTyping();
dlc.this();
dlc.that();
dlc.tOther();
dlc.damnLongAnnoyingMethodNameStillHasToBeTypedEveryTime();
}
Run Code Online (Sandbox Code Playgroud)
好吧,所以这不是很好,但你不应该经常输入整个类名,就在你第一次声明时; 并且包导入使它不必DamnLongPackageNameThatIDontLikeTyping.DamnLongClassNameThatIDontLikeTyping
每次都输入:
但是,输入可能很烦人.进入编辑器.如果您不使用Eclipse,Netbeans或IntelliJ,那么您现在需要立即停止阅读并安装它 - 加载您的项目.我会等....
认真.去实现它(梦想);去得到它(东西.如果没有它,其余部分将无济于事.
现在,真正巧妙的是,要获得我上面输入的内容,你只需这样做:
class MyCoolClass()
{
DLC<ctrl-space>
Run Code Online (Sandbox Code Playgroud)
输入后,您的文件将如下所示:
import DamnLongPackageNameThatIDontLikeTyping;
class MyCoolClass()
{
DamnLongClassNameThatIDontLikeTyping<your cursor here>
Run Code Online (Sandbox Code Playgroud)
请注意,你没有输入该死的任何东西,只是DLC它找出了你想要导入的类,为它添加了一个导入并将该类放在那里.(如果有多个匹配项,您可能必须从类列表中进行选择).
最重要的是,一旦你有一个名为dlc的对象被实例化,你可以输入:
dlc.<ctrl-space>
并获取该类中的方法列表.永远不会再输入一个方法名称.如果你班上有一些kagillion方法,不要滚动它们,输入:dlc.dLAM<ctrl-space>
to getdlc.damnLongAnnoyingMethodNameStillHasToBeTypedEveryTime();
切勿再次键入长方法名称.
没有长的方法名,没有长的类名,没有长的包名.然而,您获得了极其可读的方法,包和类.这就是为什么java程序员倾向于使用这些长名称,我们也试图记住我们正在为下一个人编写代码,并且不希望他必须遍历我们的代码来试图弄清楚:
g.m();
指的是 - 强迫他们记住在这个课程中它意味着GreatClass.motion
,但在下一课程中它意味着Grey.modifyColor
- 这将是非常残酷的.
静态类型的Java给编辑器带来了很多力量.它可以做你甚至无法用动态类型语言做的事情,你应该发挥你的语言的力量成为一个有效的程序员 - 而不是试图使每种语言适合你从使用另一种语言学到的某种风格.
请注意,这也适用于静态方法......
DLC<ctrl-space>.dLM<ctrl-space>
将被一个电话取代DamnLongClass.damnLongMethod()
,它甚至会在9次击键中包括你的parens.
Ste*_*n C 20
Java语言不提供别名机制.
但是,您可以通过以下某些组合来缓解您的"痛苦":
对于静态方法,您可以使用静态导入来避免使用长类名.
您可以使用短名称和简短方法名称声明自己的便利类,并实现静态方法以委托给真正的方法,例如:
public static void shortName(...){VeryLongClassName.veryLongMethodName(...); }
对于常规方法,您可以实现Wrapper类或具有更方便的方法名称的子类.但是,两者都有维护和(取决于您的JVM)性能方面的缺点.
但让我们退后一步:
如果真正的问题是您只是厌倦了输入长名称,那么解决方案是使用支持在键入名称时完成名称的现代IDE.比如@ BillK的回答.
如果真正的问题是您厌倦了长名称占用太多空间,解决方案是使用更宽的屏幕/更长的线条.大多数显示器足够大,可以显示120个字符(或更多)宽的源代码,没有眼睛疲劳.
如果以上都不是答案,请考虑重构违规代码以使用合理(即更短)的类和方法名称.再一次,现代IDE可以快速安全地处理这种重构.
在最后一点,我会认为过长的类名和方法名是坏的风格.IMO,你有理由花时间自己修复它们,或建议修复它们,特别是如果它们构成某些库或模块的"公共"API.
Dre*_*lls 14
其实,有是一个办法让你以后1/2.
看看你的例子:
LONGGGGGGGGGGGGGGGClass.longggggggggggggggggggggggggMethod();
Run Code Online (Sandbox Code Playgroud)
它似乎longggggggggggggggggggggggggMethod
是静态的.(如果不是,你会在它前面添加一个变量名称,你可以控制它的大小.)
您可以使用Java的静态导入功能来"别名"或将静态方法导入LONGGGGGGGGGGGGGGGClass
到您自己的类的命名空间中.而不是上面的代码,你只需要写这个:
longggggggggggggggggggggggggMethod();
Run Code Online (Sandbox Code Playgroud)
Eri*_* J. 10
您可以使用继承或封装来包装原始类.
class g extends LONGCLASS
{
void a() { super.loooonnng(); }
}
Run Code Online (Sandbox Code Playgroud)
要么
class g
{
private LONGCLASS lc;
void a() { lc.loooonnng(); }
}
Run Code Online (Sandbox Code Playgroud)
Java 中不支持。
有一个增强票证 (7166917),用于为导入添加别名,这会很有帮助。想法是这样的:
import a.very.lng.pckage.* as shortpckg
import my.pckage.IsAVeryLongClassName as MyShort
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
42461 次 |
最近记录: |