在Java类中将常量放在哪里?

时间:2019-05-06 13:25:40

标签: java

我想知道仅在一个Java类中使用的常量放在哪里?我的代码为共享内存创建了一个名为“ sharedMemory”的名称,但是我不确定是否应该将其放置在单独的Java文件中,还是只在与私有静态最终字符串SHARED_MEMORY =“ sharedMemory”的同一类中进行定义。 我仅在特定班级需要此变量。另外,如果我在同一个类中定义,应该将其设为静态吗?

class ABC{

private static final String SHARED_MEMORY = "sharedMemory"; // OK to define in same class or in separate constants file

   public void get(){
   String name;
    if(checIfSharedMemoryNeeded()){
      name  = SHARED_MEMORY;
    }
   }

   private boolen checIfSharedMemoryNeeded(){
     return (x.equals("yuiyr") && y.equals("yweir"))
   }
}

5 个答案:

答案 0 :(得分:1)

定义仅在该类中的单个类中需要的常量,并将其设置为private。您可以确保它不会在其他任何地方意外使用。

private static final String ONLY_FOR_THIS_CLASS = "only here";

定义在上下文上绑定到特定类的常量,但是在上下文中绑定到该类的其他类中可能需要它们,但使它们成为public

public static final String CONTEXTUALLY_FOR_THIS_CLASS_BUT_USABLE_ANYWHERE = "everywhere";

它将允许在其他类(如

)中使用
String constantValueFromOtherClass = OtherClass.CONTEXTUALLY_FOR_THIS_CLASS_BUT_USABLE_ANYWHERE;

如果您想到一个只包含公共常量的类的想法,请考虑编写enum。在许多情况下,enum是更好的解决方案。

答案 1 :(得分:0)

没有通用的操作准则。由于它仅在一个地方使用,因此建议您将其留在使用它的类中。

除非您将来要更改该值,并且还有许多其他硬编码的值要在以后更改,否则我建议您创建一个包含所有这些值的Config类。

答案 2 :(得分:0)

如果此常量仅用于此类,则应声明相同的类范围。

现在,您必须考虑是否将来要更改此值。如果这样做,并且您的应用程序可以扩展,最好创建一个.properties文件来保存所有值并加载到您的应用程序中。

答案 3 :(得分:0)

Java中非全局常量的常规约定是使用private static final编写它,如下所示:

class Foo {
    private static final String bar = "foobar";

    ...
}

答案 4 :(得分:0)

如果要在ABC类中使用此变量(SHARED_MEMORY),则可以使用私有访问说明符,并且如果此变量是您的类的一部分而不是对象,则使用static是个好主意。