如何从存储在 ArrayList 中的方法 return toString 方法
How to return toString method from methods stored in an ArrayList
我是 java 和 object 面向编程的新手,但渴望在 java 方面做得更好并参与 Whosebug 社区。
我怀疑这个问题有一个简单的解决方案,但我无法在任何地方找到答案。
我有一堆书籍详细信息存储在数组列表中,每个都有不同级别的详细信息(即工程书籍有一个额外的字符串 "subject",而标准书籍只有 3 个变量)。
我想知道是否可以从 ArrayList 中存储的值调用每本书 class 的 toString 方法?
或者,是否可以将每个不同书籍 class 方法的 toString 输出存储在 ArrayList 中?
这样,如果有工程教科书,它将显示数组列表中的所有详细信息,而编程教科书将显示较少的详细信息(如果字符串字段为空,则不保留 'null'。
即arraylist 将打印:
教科书 1:Java101/DrMigoreng/1331/Java
教材 2:Python201/DrKarl/112/Python
Textbook3:Fluids101/Dr Brisbane/122/GIS/Modelling(那里有额外的字段)
等...
如果有人能提供一个可能有帮助的关键字,我们将不胜感激。
谢谢
代码如下:
构建 ArrayList 的 TestTextBooks class:
import java.util.ArrayList;
public class TestTextbooks {
public static void main(String[] args) {
Textbook java101 = new ProgrammingTextbook("Java101","Dr Migoreng",1331,"Java");
Textbook python201 = new ProgrammingTextbook("Python201","Dr Karl",112,"Python");
Textbook fluidMechanics = new EngineeringTextbook("Fluids101","Dr Brisbane",122,"GIS","Fluid Mechanics");
Textbook modelling101 = new EngineeringTextbook("Modelling101","Dr Suzuki",322,"WaterGems","Water Modelling");
ArrayList books = new ArrayList();
books.add(java101);
books.add(python201);
books.add(fluidMechanics);
books.add(modelling101);
System.out.println("" + books.toString());
}
}
编程教科书 class(如果可用,添加字段 "language")
public class ProgrammingTextbook extends Textbook {
private String language;
private String title;
private String author;
private int pages;
public ProgrammingTextbook (){
}
//overloaded constructor
public ProgrammingTextbook (String title, String author,int pages,String language){
this.title = title;
this.author = author;
this.pages = pages;
this.language=language;
}
//set method for overloaded constructor
public void setProgrammingTextBook (String title, String author,int pages,String language){
setLanguage(language);
}
//individual set methods
public void setLanguage(String language){
this.language = language;
}
//individual get methods
public String getLanguage(){
return language;
}
public String toString(String title, String author,int pages,String language){
return title + "/" + author + "/" + pages + "/" + language;
}
}
工程教材 class(添加领域语言和主题)
public class EngineeringTextbook extends Textbook {
private String language;
private String subject;
//default constructor (probs shouldn't actually have values)
public EngineeringTextbook (){
}
//overloaded constructor
public EngineeringTextbook (String title, String author,int pages,String language,String subject){
this.title = title;
this.author = author;
this.pages = pages;
this.language=language;
this.subject=subject;
}
//set method for overloaded constructor
public void setEngineeringTextBook (String title, String author,int pages){
setLanguage(language);
setSubject(subject);
}
//individual set methods
public void setLanguage(String language){
this.language = language;
}
public void setSubject(String subject){
this.subject = subject;
}
//inbdividual get methods
public String getLanguage(){
return language;
}
public String getSubject(){
return subject;
}
//toString method
public String toString(String title, String author,int pages,String language,String subject){
return title + "/" + author + "/" + pages + "/" + language + "/" + subject;
}
}
抽象教科书 Class(定义作者、标题和页码)(所有书籍共享)
public abstract class Textbook {
protected String title;
protected String author;
protected int pages;
//default constructor (Don't really need to add null for all values but put in to show it is a default constructor
public Textbook (){
this.title = null;
this.author = null;
this.pages = 0;
}
//overloaded constructor
public Textbook (String title, String author,int pages){
this.title = title;
this.author = author;
this.pages = pages;
}
//individual set methods
public void setTitle(String title){
this.title = title;
}
public void setAuthor(String author){
this.author = author;
}
public void setPages(int pages){
this.pages = pages;
}
//individual get methods
public String getTitle(){
return title;
}
public String getAuthor(){
return author;
}
public int getPages(){
return pages;
}
//abstract toString method
public String toString(String title, String author,int pages){
return title + "/" + author + "/" + pages;
}
}
Object.toString()
不接受任何参数。当您未能正确覆盖方法时,使用 @Override
注释来捕获它。
@Override
public String toString() {
return title + "/" + author + "/" + pages + "/" + language;
}
和
@Override
public String toString() {
return title + "/" + author + "/" + pages;
}
等等
我是 java 和 object 面向编程的新手,但渴望在 java 方面做得更好并参与 Whosebug 社区。
我怀疑这个问题有一个简单的解决方案,但我无法在任何地方找到答案。 我有一堆书籍详细信息存储在数组列表中,每个都有不同级别的详细信息(即工程书籍有一个额外的字符串 "subject",而标准书籍只有 3 个变量)。 我想知道是否可以从 ArrayList 中存储的值调用每本书 class 的 toString 方法? 或者,是否可以将每个不同书籍 class 方法的 toString 输出存储在 ArrayList 中?
这样,如果有工程教科书,它将显示数组列表中的所有详细信息,而编程教科书将显示较少的详细信息(如果字符串字段为空,则不保留 'null'。
即arraylist 将打印:
教科书 1:Java101/DrMigoreng/1331/Java 教材 2:Python201/DrKarl/112/Python Textbook3:Fluids101/Dr Brisbane/122/GIS/Modelling(那里有额外的字段)
等...
如果有人能提供一个可能有帮助的关键字,我们将不胜感激。
谢谢
代码如下:
构建 ArrayList 的 TestTextBooks class:
import java.util.ArrayList;
public class TestTextbooks {
public static void main(String[] args) {
Textbook java101 = new ProgrammingTextbook("Java101","Dr Migoreng",1331,"Java");
Textbook python201 = new ProgrammingTextbook("Python201","Dr Karl",112,"Python");
Textbook fluidMechanics = new EngineeringTextbook("Fluids101","Dr Brisbane",122,"GIS","Fluid Mechanics");
Textbook modelling101 = new EngineeringTextbook("Modelling101","Dr Suzuki",322,"WaterGems","Water Modelling");
ArrayList books = new ArrayList();
books.add(java101);
books.add(python201);
books.add(fluidMechanics);
books.add(modelling101);
System.out.println("" + books.toString());
}
}
编程教科书 class(如果可用,添加字段 "language")
public class ProgrammingTextbook extends Textbook {
private String language;
private String title;
private String author;
private int pages;
public ProgrammingTextbook (){
}
//overloaded constructor
public ProgrammingTextbook (String title, String author,int pages,String language){
this.title = title;
this.author = author;
this.pages = pages;
this.language=language;
}
//set method for overloaded constructor
public void setProgrammingTextBook (String title, String author,int pages,String language){
setLanguage(language);
}
//individual set methods
public void setLanguage(String language){
this.language = language;
}
//individual get methods
public String getLanguage(){
return language;
}
public String toString(String title, String author,int pages,String language){
return title + "/" + author + "/" + pages + "/" + language;
}
}
工程教材 class(添加领域语言和主题)
public class EngineeringTextbook extends Textbook {
private String language;
private String subject;
//default constructor (probs shouldn't actually have values)
public EngineeringTextbook (){
}
//overloaded constructor
public EngineeringTextbook (String title, String author,int pages,String language,String subject){
this.title = title;
this.author = author;
this.pages = pages;
this.language=language;
this.subject=subject;
}
//set method for overloaded constructor
public void setEngineeringTextBook (String title, String author,int pages){
setLanguage(language);
setSubject(subject);
}
//individual set methods
public void setLanguage(String language){
this.language = language;
}
public void setSubject(String subject){
this.subject = subject;
}
//inbdividual get methods
public String getLanguage(){
return language;
}
public String getSubject(){
return subject;
}
//toString method
public String toString(String title, String author,int pages,String language,String subject){
return title + "/" + author + "/" + pages + "/" + language + "/" + subject;
}
}
抽象教科书 Class(定义作者、标题和页码)(所有书籍共享)
public abstract class Textbook {
protected String title;
protected String author;
protected int pages;
//default constructor (Don't really need to add null for all values but put in to show it is a default constructor
public Textbook (){
this.title = null;
this.author = null;
this.pages = 0;
}
//overloaded constructor
public Textbook (String title, String author,int pages){
this.title = title;
this.author = author;
this.pages = pages;
}
//individual set methods
public void setTitle(String title){
this.title = title;
}
public void setAuthor(String author){
this.author = author;
}
public void setPages(int pages){
this.pages = pages;
}
//individual get methods
public String getTitle(){
return title;
}
public String getAuthor(){
return author;
}
public int getPages(){
return pages;
}
//abstract toString method
public String toString(String title, String author,int pages){
return title + "/" + author + "/" + pages;
}
}
Object.toString()
不接受任何参数。当您未能正确覆盖方法时,使用 @Override
注释来捕获它。
@Override
public String toString() {
return title + "/" + author + "/" + pages + "/" + language;
}
和
@Override
public String toString() {
return title + "/" + author + "/" + pages;
}
等等