如何正确设置构造函数上的数据?

时间:2015-09-08 12:01:29

标签: java android class constructor

我想在一个有多个名字的类中设置一些ID字符串,所以我认为我必须尝试创建一个构造函数(至少,我想是这样)。让我举个例子来展示我想让你看到的东西。 (我不知道这是否是做我想做的最好的方式,

Anotherclass.java
.......
    MarilynManson.setSong[3] = "7362bf923";
    Slipknot.setSong[76] = "f9434gb394g7b";

非常感谢你。

嗨再次,对不起我的糟糕解释...我真的想尝试它的例子:点击现有的循环列表视图(歌曲1,歌曲2,歌曲3)这就是为什么我想得到一些ID (字符串)来自另一个类,ei(像这样的东西):

{{1}}

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:3)

你的课程没什么意义。您尝试设置ID,但您没有要设置的变量ID。

public Music MarilynManson(){
        setArtist("MM");
        setSongs(new String[220]);
//How to set ID of songs?
    }

由于您为其命名,因此这不是构造函数,而是一种期望返回音乐实例的方法。这不是你想要的。

如果你想这样做,你需要为世界上的每个艺术家/歌曲创建一个方法。

你想要的是:

public Music(String artist){
  this.artist = artist;
}

public Music(String artist, String[] songs){
  this.artist = artist;
  this.songs = songs;
}

当然,你需要添加一些getter和setter。

我的建议:将歌曲放入列表而不是数组,这样您就可以添加歌曲而无需每次都创建新数组。

之后,您可以执行以下操作:

public static void main(String[] args){
  Music mManson = new Music ("Marilyn Manson", new String[20]);
  Music slipknot = new Music("Slipknot", new String[50]);
}

只是一个想法:我会把它变成一个List类型的Song元素(一首歌有a,a,...),而不是字符串。

答案 1 :(得分:0)

您的构造函数需要与您的类具有相同的名称。因此,在您的情况下,您的构造函数方法将是public Music()

现在,您希望使用artistsongs来实例化您的音乐课程。为此,您需要允许构造函数接收参数。所以你的构造函数现在如下:

public Music(String artist, String[] songs){
    this.artist = artist;
    this.songs = songs;
}

在调用构造函数时,您可以:

Music myMusic = new Music("Michael Jackson", {"Thriller", "Beat it"});

答案 2 :(得分:0)

让我们以面向对象的方式思考。在你的问题中,你谈论的是三个实体 - 音乐,艺术家和歌曲。所以我们可以得出这样的结论(这就是我的想法):

  
      
  1. 一位艺人可以唱很多歌
  2.   
  3. 一个音乐有一个艺术家(可以超过一个,但在你的情况下,让它成为一个)。
  4.   

而不是解释很多,我认为你可以通过以下课程理解;如何用正确的方法解决这些问题。这是解决问题的一种方法。您可以按照自己的方式进行设计,(以面向对象的方式思考)。

public class Song{
  int id; //id of song
  String songName;
  //getters and setters
}
public class Artist{
  int id;// id for each artist
  List<Song> songs;//songs list by this singer
  //getters and setters
}

public class Music{
   int id;// music id
   Artist artist;//artist
   //getters and setters
  //your logic...
}