java - 如何使用循环来创建新对象?

标签 java arrays class methods

所以本质上这就是我想做的,

do{
    Object name = new Object();*Create new object*
    Object.method*run created object through a method*

    Scanner keyboard = new Scanner(System.in);
    System.out.println("Do you wish to continue entering data");
    String answer = keyboard.nextLine();   
 } while (answer.equalsIgnoreCase("Yes"))

我需要创建数组才能完成这项工作吗?如果是这样,那将如何运作?

最佳答案

视情况而定。如果您的对象具有状态(例如代表数据库中的一行),则必须为每次迭代创建它。但是,如果您需要做的只是调用对象中的方法(即,如果它是无状态的(没有非静态和非最终类变量或者是不可变的)),那么您应该只创建一个实例,然后调用该方法在每次迭代中。 Scanner 对象就是一个例子。您所做的就是调用其中的方法,因此您不必每次都创建一个新对象,而是可以在调用该方法之前创建它,或者作为实例(类级别,最好是私有(private))字段,以便可以重复使用它在所有方法中。以下是我重写代码的方法:

public class MyClass {

private final Scanner scanner = new Scanner(System.in);

public void doSomething() {
    Object object = new Object();
    do {
        // call your method here
        // object.yourMethod();

        System.out.println("Do you wish to continue entering data?");
    } while (scanner.nextLine().equalsIgnoreCase("Yes"));
}

}

另外,如果您想存储与您创建的每个实例关联的状态,那么您可以这样做:

public class MyClass {

private final Scanner scanner = new Scanner(System.in);

public void doSomething() {
    List<Object> data = new ArrayList<Object>();
    Object object;
    do {
        // call your method here
        object = new Object();
        // object.yourMethod();
        data.add(object);

        System.out.println("Do you wish to continue entering data?");
    } while (scanner.nextLine().equalsIgnoreCase("Yes"));

    for(Object d : data) {
        // do something with the info you captured
    }
}

}

关于java - 如何使用循环来创建新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8393009/

相关文章:

java - mysql/jdbc : Deadlock

java - 可视化我的应用程序的 Java 源代码复杂性 - 适用于 Windows 的工具?

java - 如何在IntelliJ中调试Vaadin应用程序

没有静态关键字声明的字符数组在 C 中崩溃

java - 使用 java.exe 运行 .class 文件 - 错误 : Could not find or load main class

java - 锁定虚拟机内单个线程的文件

javascript - 提取 2 个属性值的列表

arrays - 取消引用日期

javascript - 你能用 jquery 定位类吗?

java - 在不同的类中创建内部类对象数组