我要使用此程序执行的操作是使用Song类上的toString输出歌曲的信息。当我输出它时,除了SongType /流派,其他一切都很好。它仍在输出不确定。
abstract class Song implements ISong //SONG CLASS
{
private String name;
private String rating;
private int id;
private SongType genre;
public Song()
{
name = " ";
rating = " ";
id = 0;
genre = SongType.UNDETERMINED;
}
public Song(String name, String rating, int id)
{
this.name = name;
this.rating = rating;
this.id = id;
this.genre =Song.UNDETERMINED;
}
public void setName(String name)
{
this.name = name;
}
public void setRating(String rating)
{
this.rating = rating;
}
public void setID(int id)
{
this.id = id;
}
public String getName()
{
return(this.name);
}
public String getRating()
{
return(this.rating);
}
public int getID()
{
return(this.id);
}
@Override
public String toString()
{
return("Song: " + this.name +
"\nID: " + this.id +
"\nRating: " + this.rating +
"\nGenre: " + this.genre);
}
}
class Pop extends Song //POP CLASS
{
public Pop(String name, String rating, int id)
{
super(name, rating, id);
}
}
interface ISong //INTERFACE
{
public enum SongType {POP, COUNTRY, HIPHOP, SOUL, UNDETERMINED;}
}
public class test{
public static void main(String [] args)
{
Song one = new Pop("Pop Song", "Five", 123);
System.out.println(one);
}
}
最佳答案
当我输出它时,除了SongType /流派,其他一切都很好。它仍在输出不确定。
但是,您实际上将类型字段设置为除SongType.UNDETERMINED
以外的任何值?
我建议您为Song类和ISong接口提供一个返回当前流派的public SongType getGenre()
方法,以及一个合适的setter方法,一个必要的public void setGenre(SongType genre)
和接受SongType流派参数的构造函数。 toString()
方法应调用getGenre()
方法以获取当前流派状态。
最重要的是,您需要先将具体类中的流派设置为SongType.UNDETERMINED
以外的其他类型,然后再尝试将其打印出来。