Java设计(使用函数中的final字段)
我已经用Java编写了一年的程序,在过去的一年里我休息了一下,做了一些python。我回到了java,我对一些设计的东西感到困惑 假设我有一个类,它几乎做所有静态的事情Java设计(使用函数中的final字段),java,Java,我已经用Java编写了一年的程序,在过去的一年里我休息了一下,做了一些python。我回到了java,我对一些设计的东西感到困惑 假设我有一个类,它几乎做所有静态的事情 public class Example{ String list = {{"A", "apple"}, {"B","banana"}, {"C", "can"}} public static manipulateTheList(){ // do something with the a
public class Example{
String list = {{"A", "apple"}, {"B","banana"}, {"C", "can"}}
public static manipulateTheList(){
// do something with the above list
}
public static anotherManipulateTheList(){
// do something with the above list
}
}
它不允许我使用this.list
,因为该方法是静态的。但我不认为每次都应该在方法中定义列表,因为类中的所有方法都将使用相同的列表
对于这种情况,有解决方案吗?最佳做法是什么?您可以将列表声明为
静态成员,如果不打算重新分配,也可以将其声明为最终成员:
private static final String LIST = {{"A", "apple"}, {"B", "banana"}, {"C", "can"}};
您可以参考实例和静态方法中的列表,如下所示:
Example.LIST
请注意,任何实例或静态方法都可以访问它。。。如果你修改它,变化将反映在任何地方。这就是为什么静态成员如此危险。您只能在静态方法中使用静态全局变量,但可以在实例方法中使用静态变量。困惑的嗯,单词static用于声明指向内存中确定位置的对象,因此您可以从任何类访问该值(这取决于访问修饰符public、private、protected和default)。静态方法通常被称为类方法,因为它们可以在没有类实例的情况下直接调用
如果您添加final修饰符,它将是一个常量,命名它的惯例是所有字母都大写,可能类似于:
public static final String[][] LIST = {{"a","b"},{"c","d"}};
//can be named LIST_LETTERS too
最后一个修饰符指示此值永远不会更改
我认为如果要在Util类上使用它,可以将方法声明为静态的,因此字符串数组可以是任何要作为参数的内容,并且方法将始终相同
您可以找到有关静态修改器的更多信息
我希望它能帮助您。列表应该是常量还是随类的每个实例而变化?如果列表总是相同的,也许它应该是静态的,而您的方法不需要是静态的。