通过从方法的返回值中进行复制来实例化对象是否可以接受?

问题描述

我是Java的新手,最近我在uni类中了解了构造函数。我尝试编写代码以实例化带有参数的对象。脚本使用Scanner实例获取输入作为参数。

问题是,如果我创建一个方法来实例化其中的一个对象,则该对象将被视为该方法的局部变量。如果我创建了一种仅获取参数的方法,并使用它们实例化main方法中的对象,那么它将变得有些混乱。我的解决方案是创建一个方法:1.获取输入; 2.使用构造函数实例化一个对象; 3.返回刚刚创建的对象。我可以得到想要的结果,但不确定是否可以接受。

这是我的代码

public class Game {
    private int gameID;
    private String gameTitle;
    private String genre;

    // constructor
    public Game(int ID,String title,String genre) {
        gameID = ID;
        gameTitle = title;
        this.genre = genre;
    }
}
import java.util.Scanner;

public class GameTest {

    static Scanner kb = new Scanner(system.in);

    public static void main(String[] args) {
        Game myGame = constructGame();
    }


    static Game constructGame() {

        int ID = kb.nextInt();
        kb.nextLine();
        String title = kb.nextLine();
        String genre = kb.nextLine();

        Game newGame = new Game(ID,title,genre);

        return newGame;
    }
}

解决方案可以解决问题吗?老实说,我有点担心内存在这里引用东西。

解决方法

这是完全可以接受的。如果constructEmployee接受它使用的Scanner作为参数,然后使用main方法将扫描器传递给它,那可能会更干净,但是您当前的使用本身并没有错代码。