我想知道仅在一个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"))
}
}
答案 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是个好主意。