相关疑难解决方法(0)

在Java中实现常量的最佳方法是什么?

我见过这样的例子:

public class MaxSeconds {
   public static final int MAX_SECONDS = 25;
}
Run Code Online (Sandbox Code Playgroud)

并且假设我可以有一个Constants类来包装常量,声明它们是静态final.我几乎不知道Java,我想知道这是否是创建常量的最佳方法.

java constants

373
推荐指数
12
解决办法
67万
查看次数

与java中的静态字段接口以共享"常量"

我正在寻找一些开源Java项目来进入Java,并注意到它们中有很多都有某种"常量"接口.

例如,processing.org有一个名为PConstants.java的接口,大多数其他核心类实现了这个接口.界面充满了静态成员.有这种方法的理由,还是这被认为是不好的做法?为什么不在有意义的地方使用枚举,或者使用静态类?

我发现使用接口允许某种伪"全局变量"很奇怪.

public interface PConstants {

  // LOTS OF static fields...

  static public final int SHINE = 31;

  // emissive (by default kept black)
  static public final int ER = 32;
  static public final int EG = 33;
  static public final int EB = 34;

  // has this vertex been lit yet
  static public final int BEEN_LIT = 35;

  static public final int VERTEX_FIELD_COUNT = 36;


  // renderers known to processing.core

  static final …
Run Code Online (Sandbox Code Playgroud)

java

113
推荐指数
5
解决办法
11万
查看次数

组织Java常量的理想方法

我们有一个基于旧的jdk 1.4的庞大项目.我们已将Web应用程序迁移到JDK 1.6,但代码中仍然存在大量低效的实践和糟糕的设计.

关于主要的痛点点巨大的java类在单个java文件中有2500多行代码.这么多文件都是这样的.

试图通过删除常量并将常量放在不同的Constants.java文件中来重构我开始的类.但由于整个应用程序中有很多常量,因此常量文件存在增长到巨大比例的风险.

我希望得到关于开发人员采用什么策略来保持代码清洁和可维护性的反馈.

java coding-style constants code-organization

16
推荐指数
2
解决办法
9214
查看次数

枚举VS类VS接口

我一直在阅读本网站上有关常量用法的大量帖子.

问题:我应该何时使用枚举作为常量,使用类或接口.

我看到了我想要解决的两个关键情况.

1.多个项目在应用程序中使用的全局常量.

例:

  • 常见的日志字符串
  • 容器引用,如WebSphere EAR中使用的数据库映射引用

2.对象特定常量

例:

  • 员工对象的员工工资率

从我所读到的一切来看,这就是我认为我掌握的内容以及我正在寻找的意见.

对于情况1:设计方法:使用最终类和静态导入.
在这里看到:接口常量的用途是什么?

对于情况2:设计方法:应用Enums来表示这些常量作为对象.

要记住的其他要点:

  • 如果常量字符串属于该类,并且您只需要在使用它的类中保留字符串值
  • 不要在情况​​1中使用接口.如上面链接中提到的Constant Interface Anti-pattern..

提前感谢您的想法和意见.

java enums constants

15
推荐指数
1
解决办法
1万
查看次数

在Android应用程序中存储全局常量的位置?

我知道存储全局常量的最佳实践是什么,这些常量可以在编译时随环境(debug,preprod,prod,release等)而改变.

在iOS中,我曾经将所有全局常量保留在头文件中并使用预处理器宏进行更改,请参阅以下答案:

在iOS应用程序中存储全局常量的位置?

我应该为Android使用什么解决方案?

java android constants global-variables

15
推荐指数
1
解决办法
2万
查看次数

实现类或导入类java

在Java内部什么是更好的,或者什么是最优的,或者什么是标准:用常量或使用点表示法实现一个类?

例:

选项1:

import com.myproject.Constantes;

public class myClass {
    myClass() {
        System.out.println("Math: " + Constantes.PI);
    }
}
Run Code Online (Sandbox Code Playgroud)

选项2:

import com.myproject.Constantes;

public class myClass implements Constantes {

    myClass() {
        System.out.println("Math: " + PI);
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个更好?为什么?MVJ使用,资源,速度?

java import interface class

9
推荐指数
1
解决办法
6291
查看次数

如果我们有抽象类,为什么要在 Java 中使用接口?

我有两个问题

  1. 即使抽象类可以完成接口的功能,为什么我们在java中需要接口?
    在搜索中,我发现抽象类无法完成接口功能的地方,即一个类需要实现多个接口。
    这是在java中提出接口概念的唯一原因吗?

  2. 接口中的静态最终变量有什么用?欢迎需要说明接口中变量用法的示例程序。

提前致谢。

java interface

7
推荐指数
2
解决办法
9777
查看次数

什么时候应该在自己的文件中定义常量?

我注意到一些项目喜欢将常量存储在他们自己的文件中,即全局和主程序循环中使用的常量可能会混乱主文件,所以他们可能会将它们放在别处,然后引用/导入文件/类.

我知道在编写一个OOP类时,你想要将所有常量保存在类文件的头部,以便可以静态引用它们:

myCar.setColour(Colour.RED);
Run Code Online (Sandbox Code Playgroud)

班级中RED的颜色常数在哪里Colour.

什么是于具有大量的常量的做法,他们应该只是你的主要文件的顶部或以任何方式明智的,有可能是ProgramConstants类,它是纯静态的,公共和可供阅读?

java class constants

7
推荐指数
1
解决办法
1307
查看次数

在Java中定义几个不相关类中使用的常量的位置

在Java中定义常量的位置的问题在论坛中出现了很多次,但我很难找到一个我觉得舒服的解决方案.

为简单起见,假设我有两个类:WriteMyDataReadMyData.None是另一个的子类.两个类共享两个对其操作至关重要的常量:String DELIMITERint LENGTH.将来我可能想要更改这些常量的值,以便在适当的地方定义它们.

这种共识似乎常常有利于这种enum类型.但是,在我的情况下没有什么可以枚举,所以我最终只有一个项目enum,我打电话DEFAULT:

public enum DataSettings {
    DEFAULT(",", 32);

    private final String delimiter;
    private final int length;

    DataSettings(String delmiter, int length) {
        this.delimiter = delimiter;
        this.length = length;
    }

    public String getDelimiter() { return delimiter; }
    public int getLength() { return length; }
}
Run Code Online (Sandbox Code Playgroud)

因此,在我的两个类中,我通过DataSettings.DEFAULT.getDelimiter()和访问常量DataSettings.DEFAULT.getLength().

这是非常好的OO风格吗?是否使用enum过度杀伤?如果我不使用enum,我该怎么做?为常量创建一个接口似乎不受欢迎,而且我的类似乎没有自然的超类来源.初学者错误是只有一个默认项目enum吗?

java enums constants

7
推荐指数
1
解决办法
4227
查看次数

应该将常量放在界面中吗?

我知道将常量放在界面中通常被认为是不好的做法,但......

我正在使用Observer模式将事件从对象广播到侦听器.

interface DownloadListener 
{
    public void sendEvent(int eventId);
}
Run Code Online (Sandbox Code Playgroud)

广播公司使用常量int来告诉听众哪个事件发生了.

class DownloadTask 
{
    public static final int EVENT_DOWNLOAD_STARTED = 1;
    public static final int EVENT_DOWNLOAD_COMPLETED = 2; //should these go here?

    DownloadTask(DownloadListener listener)
    {
        listener.sendEvent(EVENT_DOWNLOAD_STARTED);
    }
}
Run Code Online (Sandbox Code Playgroud)

将常量放在界面中会更好吗?我的想法是接口是广播公司和听众之间的契约,因此它应该包含该合同的细节(常量).

我正在开发移动设备(Java 1.3),所以很遗憾不能使用枚举类型.

java oop design-patterns

4
推荐指数
1
解决办法
1193
查看次数