在我的程序中,我有一个“团队”类,用于保存团队中每个对象的数据。 现在我正在尝试创建一个“Team”对象的ArrayList,但我想知道创建一个新类是否更好的做法,或者我是否应该在“Team”的静态方法中执行该任务。 / p>
我已经搜索了答案,但只找到了静态问题/非静态问题/答案的比较。我对使用静态方法创建新类时更感兴趣的地方。
感谢您的帮助
编辑:主要是我在这里要问的是“dataExtract”和“hasTeam”方法(如下面的代码所示)是应该在他们自己的类中,还是作为静态方法保存。
import java.util.ArrayList;
public class Team {
String country;
String skaterNames;
int points;
public Team(String cntr, String sktrNames, int point){
country = cntr;
skaterNames = sktrNames;
points = point;
}
public Team(){}
public static ArrayList<Team> dataExtract(FileInput file){
ArrayList<Team> al = new ArrayList<Team>();
while (file.hasMoreData()){
String tempLine = file.readLine();
if (hasTeam(al, tempLine.substring(0, 3)) == -1){
al.add(new Team(tempLine.substring(0, 3), tempLine.substring(3, 30).trim(), Integer.parseInt(tempLine.substring(37))));
}
else {
al.get(hasTeam(al, tempLine.substring(0, 3))).skaterNames += (", "+ tempLine.substring(3, 30).trim());
al.get(hasTeam(al, tempLine.substring(0, 3))).points += Integer.parseInt(tempLine.substring(37));
}
}
return al;
}
public static int hasTeam(ArrayList<Team> al, String team){
for (int i =0; i<al.size(); i++){
if (((Team) al.get(i)).country.equalsIgnoreCase(team))
return i;
}
return -1;
}
}
答案 0 :(得分:1)
你应该为可重用性创建非静态类,创建子类的能力等等。如果你有类似“团队”的东西(无论可能指的是什么),通常认为制作团队类更好的做法并创建它的几个实例。鉴于您正在创建多个Team对象,使用静态方法/字段只会太混乱和无组织。
答案 1 :(得分:1)
在这种特殊情况下,静态方法可能没问题。非静态的优点将是未来的编辑(即,如果类增长任何改变非常数字段或引用它们将成为错误源的东西)并且通常是整洁的。将方法保存在变量中可以让您获得一个非常有用的生活变化变量。但是,在您的特定情况下,这不是该课程的目的。
Static使方法可调用,而无需创建类的对象。有时这可能很好,例如所有Math类方法(Math.round,Math.ceil等)。仅当方法仅使用自己的参数时才应使用静态。即便如此,有时最好不要让它保持静态。它保持清洁,你总是知道你在编辑什么。
如果静态方法使用在构造函数中初始化的变量,则可能存在问题。如果未初始化此类的对象,则不初始化构造函数。这可能会导致不良副作用和程序错误。
一般情况下,如果类只是一个完全独立的方法的外壳,则只使用静态。