【问题标题】:How to set data on a constructor correctly?如何正确设置构造函数的数据?
【发布时间】:2015-09-08 12:01:28
【问题描述】:

我想在一个具有多个名称的类中设置一些 ID 字符串,所以我认为我必须尝试制作一个构造函数(至少,我是这么认为的)。让我举个例子来说明我想让你看到的。 (我不知道这是否是做我想做的最好的方式,

public class Music {

    private String Artist;
    private String[] Songs;

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

    public Music Slipknot(){
        setArtist("Slipknot");
        setSongs(new String[200]);
//How to set IDs of songs?
}

    public String getArtist() { return Artist; }
    public void setArtist(String artist) {Artist = artist;    }

    public String[] getSongs() { return Songs; }
    public void setSongs(String[] songs) {
        Songs = songs;
    }

    public static void main(String args[]) {}

非常感谢。


再次嗨,对不起,我的解释很糟糕......我真正想尝试的是:点击现有的循环列表视图(歌曲 1、歌曲 2、歌曲 3),这就是我想要获得一些 ID 的原因(字符串)来自另一个类,e.i(类似这样的东西):

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

非常感谢您的帮助!

【问题讨论】:

  • “设置 ID”是什么意思?你是说名字吗?还是价值?请记住,变量名称只是引用,因此字符串数组中的元素没有命名。
  • 哦,对不起,set ID 例如是这样的: String sweetdreams = "783645biefbwifñ";

标签: java android class constructor


【解决方案1】:

你的课毫无意义。您尝试设置一个 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 Song 有 a , a , ... ),而不是 Strings。

【讨论】:

  • 非常感谢!在发布之前我已经删除了你在 void main 上所做的事情,呵呵
【解决方案2】:

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

现在,您想使用 artistsongs 实例化您的 Music 类。为此,您需要允许构造函数接受参数。所以你的构造函数现在如下:

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

当调用你的构造函数时,你可以去:

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

【讨论】:

    【解决方案3】:

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

    1. 一个艺术家可以唱很多首歌
    2. 一首音乐有一位艺术家(可能不止一位,但在您的情况下,请设为一位)。

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

    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...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2014-07-03
      • 2021-11-12
      • 2010-10-09
      相关资源
      最近更新 更多