java—在为子类创建对象时,如何从hashmap实现属性?

fhg3lkii  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(329)

我尝试做的基本上是迭代我的流派,使用我的hashmap作为查找表,然后在创建对象时选择流派。我不知道下一步需要做什么,因为当我已经有了一个新的构造函数时,它总是给我关于创建新构造函数的错误。

import java.util.HashMap;
import java.util.Scanner;

public class disc {
   private String title;
   private String releaseDate;
   HashMap<Integer, String> genre = new HashMap<Integer, String>();
   Scanner mainInput = new Scanner(System.in);

    public disc(String releaseDate, String title, HashMap<Integer, String> genre) {
        this.title = title;
        this.releaseDate = releaseDate;
        this.genre = genre;
        this.genre.put(1, "Horror");
        this.genre.put(2, "Action");
        this.genre.put(3, "Hip-Hop");
        this.genre.put(4, "Pop");
        this.genre.put(5, "Jazz");
        this.genre.put(6, "Thriller");
    }

子类:

import java.util.HashMap;

public class game extends disc{
    private int PEGIRating;
    private String Platform;
   public game(int PEGIRating, String Platform, String title, String releaseDate, HashMap<Integer, String> genre){
        super(releaseDate, title, genre);
        this.PEGIRating = PEGIRating;
        this.Platform = Platform;

        game g = new game(18,"PS5","Evil Within","Feb 2018",1);

    }
}
r1zk6ea1

r1zk6ea11#

您正在尝试初始化game()构造函数中的游戏对象。。。

public game(int PEGIRating, String Platform, String title, String releaseDate, HashMap<Integer, String> genre){
    super(releaseDate, title, genre);
    this.PEGIRating = PEGIRating;
    this.Platform = Platform;

    // >>>  game g = new game(18,"PS5","Evil Within","Feb 2018",1); <<<<

}
qlzsbp2j

qlzsbp2j2#

如上所述,您正在game constructor中初始化您的game对象,这将编译,但可能会导致运行时问题。
此外,您将int数据类型传递到game constructor的最后一个参数中,而不是传递hashmap<integer,string>,正如您在构造函数签名中指定的那样。创建一个构造函数,该构造函数采用精确的参数列表,但int是最后一个数据类型,或者传递一个hashmap作为最后一个参数。

相关问题