我正在制作一个带有父类Item和子类Game和Album的程序,我已经将对象存储在一个名为Library的类中类型为Item的多态arraylist中。
public class Item {
private int id;
private String title;
private String genre;
private int yearReleased;
public Item() {
}
public Item(int id, String title, String genre, int yearReleased) {
this.id = id;
this.title = title;
this.genre = genre;
this.yearReleased = yearReleased;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public int getYearReleased() {
return yearReleased;
}
public void setYearReleased(int yearReleased) {
this.yearReleased = yearReleased;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((genre == null) ? 0 : genre.hashCode());
result = prime * result + id;
result = prime * result + ((title == null) ? 0 : title.hashCode());
result = prime * result + yearReleased;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Item other = (Item) obj;
if (genre == null) {
if (other.genre != null)
return false;
} else if (!genre.equals(other.genre))
return false;
if (id != other.id)
return false;
if (title == null) {
if (other.title != null)
return false;
} else if (!title.equals(other.title))
return false;
if (yearReleased != other.yearReleased)
return false;
return true;
}
public String toString() {
return " | ID: " + id + " | Title: " + title + " | Genre: " + genre + " | Year Released: " + yearReleased;
}
public class Game extends Item{
private int ageRating;
private String developer;
public Game() {
}
public Game(int id, String title, String genre, int yearReleased, int ageRating, String developer) {
super(id, title, genre, yearReleased);
this.ageRating = ageRating;
this.developer = developer;
new Library(this);
}
public int getAgeRating() {
return ageRating;
}
public void setAgeRating(int ageRating) {
this.ageRating = ageRating;
}
public String getDeveloper() {
return developer;
}
public void setDeveloper(String developer) {
this.developer = developer;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ageRating;
result = prime * result + ((developer == null) ? 0 : developer.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
Game other = (Game) obj;
if (ageRating != other.ageRating)
return false;
if (developer == null) {
if (other.developer != null)
return false;
} else if (!developer.equals(other.developer))
return false;
return true;
}
public String toString() {
return "Game: " + super.toString() + " | Age Rating: " + ageRating + " | Developer: " + developer;
}
}
public class Library {
static ArrayList<Item> itemList = new ArrayList<Item>();
public Library(Item object) {
itemList.add(object);
}
public static void printItems() {
for(Item i: itemList) {
System.out.println(i);
}
}
public static void removeItem(int id) {
for(int i = itemList.size() -1 ; i > -1; i--) { // start backwards as problem removing when looping foreward
if( id == itemList.get(i).getId() )
itemList.remove(i);
}
}
public static void editID(int searchId, int newId) {
for(Item i: itemList) {
if( i.getId() == searchId) {
i.setId(newId);
}
}
}
public static void editTitle(int searchId, String newTitle) {
for(Item i: itemList) {
if( i.getId() == searchId);
i.setTitle(newTitle);
}
}
public static void editGenre(int searchId, String newGenre) {
for(Item i: itemList) {
if( i.getId() == searchId);
i.setGenre(newGenre);
}
}
public static void editYearReleased(int searchId, int newYearReleased) {
for(Item i: itemList) {
if( i.getId() == searchId);
i.setYearReleased(newYearReleased);
}
}
public static void editAgeRating(int searchId, int newAgeRating) {
for (Item i: itemList) {
if( i.getId() == searchId)
i.setAgeRating(newAgeRating);
}
}
}
我看到你的代码中有不止一个问题:
1)在您的editAgeRating方法中,您没有调用setter,但您当前正在调用getter。并且您的类中没有这样的方法(getAgeRating方法采用newAgeRating参数)。您的getter方法不需要参数。这意味着方法签名是不同的。
2)在您编辑方法中,当迭代项目列表时,您将每个单独的对象视为一个项目,而不是一个游戏对象。
1)将Item定义为抽象类,并将editAgeRating方法作为抽象方法添加到该类中。
2)定义一个接口,该接口具有编辑方法,然后使你项目和游戏类实现该接口。
我有一个具有这种模式的JSON文件: 家庭电话号码数组有时可能为空。 我的spark应用程序收到这些JSON的列表,并执行以下操作: 当“home”数组为空时,我在尝试爆炸它时收到以下错误: 组织。阿帕奇。火花sql。AnalysisException:由于数据类型不匹配,无法解析“[“home]”:参数2需要整数类型,但“home”是字符串类型。;; 如果这个场是空的或是空的,有没有一种优雅的方
尝试启动应用程序时,访问ControllerServlet时出现错误500(HTTP状态500–内部服务器错误),其代码如下所示 错误文本: 类型异常报告 消息[com.example.ControllerServlet] 说明服务器遇到意外情况,无法满足请求。 例外 雅加达。servlet。ServletException:БааС[com.example.ControllerServlet]。
问题内容: 我遇到了一个例外,但找不到原因。 我得到的例外是: :尝试访问方法; 从B类 该方法是公开的。 我正在使用Tomcat 5.5.12和JAVA 1.6 问题答案: 几乎可以肯定,您在运行时使用的类版本与您期望的版本不同。特别是,运行时类将不同于您针对其进行编译的类(否则将导致编译时错误)-该方法曾经存在private吗?您的系统上任何地方都有类/ jar的旧版本吗? 作为状态的java
我得到: 错误:(37,30)Java:无法访问未找到java.util.function.function的java.util.function.function类文件 指向“等待”
null 从我的类中调用这些代码的工作方式与我预期的一样。但是,我想在Kotlin子类之外调用其中的一个方法。 如果从不同的Kotlin类尝试,则会出现以下编译错误: 未解析得引用:completeWakefulIntent
我在ReactJS中得到了一个子类和一个父类。我想让我的孩子访问父级的状态,这是每毫秒更新一次。孩子也应该有可能接触到一些父母的方法。 在另一个类中,我正在初始化一个子对象并对其调用Function startManager()。但随后我收到一条错误消息,说无法读取未定义的属性“start”。我是一个新的反应者,我认为我在定义孩子的属性时犯了一些错误。有人知道我做错了什么吗。谢谢