我有一个抽象类和2个子类。有4个常量与所有类相关。我打算将final放在抽象类中,但我知道final变量不是继承的?我是否必须在每个类中定义常量(似乎效率低下)?或者只是将常量设为即时变量(听起来不是个好主意)?我可以通过哪些方式解决这个问题? 最佳答案 如果在抽象类中定义,则以下内容将对您的所有子类可用。publicstaticfinalIntegerMYCONSTANT=42;或staticfinalIntegerMYCONSTANT=42;或protectedstaticfinalIntegerMYCONSTANT=42;第二
使用EclipseCheckstyle插件我看到这个错误:Name'logger'mustmatchpattern'^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.我通过更改解决了这个错误:privatestaticfinalLoggerlogger=Logger.getLogger(someClass.class);到privatestaticfinalLoggerLOGGER=Logger.getLogger(someClass.class);为什么这是一个checkstyle警告? 最佳答案 因为该字段被标记为f
我最近与friend讨论枚举与公共(public)静态最终常量。我告诉他publicstaticfinalconstants比枚举更易于维护,有时速度更快(android开发人员文档证实了这一点),也更方便。我还说过,使用枚举也会失去功能:您不能扩展枚举。您不能实例化枚举。然后他说,如果您需要实例化或扩展枚举,则不应使用枚举。然后我回答说,这就是为什么我们应该只使用常量,因为它更易于维护;如果在项目中期我们需要实例化一个枚举或扩展它怎么办?然后我们将不得不改变一切。为了说明我的观点而制作的枚举与常量示例:publicenumWeekDay{/**Wewillstartat1fordem
我在许许多多的Java库中看到使用了许多常量,而枚举本可以很容易地使用。即使在Swing中,也有很多代码使用常量而不是枚举。为什么?使用枚举有什么缺点? 最佳答案 因为枚举是在Java5中引入的,而那些库在很早以前就已经编写好了。重构它们会破坏无数的现有应用程序。 关于java-为什么使用常量而不是枚举?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6978878/
我有两种定义常量的方法。第一个在类中保存一堆静态最终数据类型变量,另一个使用枚举。这是拳头类型:publicclassTipTipProperties{publicstaticfinalStringMAX_WIDTH_AUTO="auto";publicstaticfinalStringPOSITION_RIGHT="right";}并且这些变量的使用将通过静态调用,例如:TipTipProperties.MAX_WIDTH_AUTO第二种是:publicenumTipTipProperties{MAX_WIDTH_AUTO(MaxWidth.AUTO),POSITION_RIGHT(
Java最佳实践建议将属性作为常量读取。那么,您认为实现它的最佳方法是什么?我的方法是:一个Configuration类,只读取一次属性文件(单例模式),并在需要时使用此类作为常量读取属性。还有一个要存储的常量类:用于在属性文件中找到它们的属性名称(例如app.database.url)。静态常量(那些我不希望用户配置的,例如CONSTANT_URL="myurl.com").publicfinalclassConfigurations{privatePropertiesproperties=null;privatestaticConfigurationsinstance=null;/
在Java中在哪里定义常量的问题已在论坛中多次出现,但我仍在努力寻找一个我觉得合适的解决方案。为简单起见,假设我有两个类:WriteMyData和ReadMyData。没有一个是另一个的子类。这两个类共享两个对其操作至关重要的常量:StringDELIMITER和intLENGTH。将来我可能想更改这些常量的值,以便在适当的地方定义它们。共识似乎经常支持enum类型。然而,在我的例子中没有什么可以枚举,所以我最终在我的enum中只有一个项目,我称之为DEFAULT:publicenumDataSettings{DEFAULT(",",32);privatefinalStringdeli
看起来“ExternalizeStrings”功能包含所有内容,生成一个Messages类,以及一个用于存储字符串本身的.txt文件。这很有趣,但我有另一种存储常量的方法:publicfinalclassConstants{//forparsingcommandspublicstaticfinalStringREGEX_COMMAND="(\\w*)*=*\"(.*)\"";//Regexforacommandfromadatafile//etc}有什么方法可以让Eclipse自动将字符串和其他值移动到这里吗? 最佳答案 选择一个文
我正在制作一个swing应用程序,并意识到我有几个类需要访问同一组常量。我无法让自己宣布其中一个是它们的主要持有者并将它们全部放在那里并让其他人引用它;我想,嘿,我会让它们都从某个共同的地方继承,但Java不做多重继承,但我可以在事物上放置无限接口(interface)。所以我想到了将它们全部转储到一个界面中(这是真的,我没有做任何研究就自然而然地想到了)。后来才知道这是异端。“事实上,它有一个名字:常量接口(interface)反模式”-asdiscussedhere(以及替代解决方案(我选择采用))。在我查看JDialog和JFrame的源代码之前,我对此一直很好,它们是这样读的:
我注意到一些项目喜欢将常量存储在它们自己的文件中,即在全局和主程序循环中使用的常量可能会使主文件困惑,因此他们可能希望将它们放在其他地方,然后引用/导入文件/类。我知道在编写OOP类时,您希望将所有常量保留在类文件的header中,以便可以静态引用它们:myCar.setColour(Colour.RED);其中RED是Colour类中的颜色常量。拥有大量常量的好做法是什么,它们应该只是位于主文件的顶部,还是以任何方式明智地拥有一个ProgramConstants纯静态、公共(public)且可供阅读的类? 最佳答案 Whati