Массив внутри класса Java? - PullRequest
0 голосов
/ 24 марта 2020
public class Playlist 
{
    String title;
    String genre;
    Boolean privatePlaylist = true;
    Song[] listOfSongs;

    public Playlist(String tl, String gn, Boolean priv)
    {
        tl = title;
        gn = genre;
        priv = privatePlaylist;
    }

    Song[] mostPlayedSongs()
   {
       return listOfSongs;
   }

}

Выше мой код. Я пытаюсь создать класс java, который возвращает список воспроизведения. Я хочу, чтобы он возвращал название, жанр, независимо от того, является ли плейлист личным или общедоступным c. Все эти три вещи уже построены выше. Однако к этому списку в качестве четвертого свойства я хотел бы добавить массив, в котором перечислены все песни в списке воспроизведения. Массив уже является свойством, которое я создал выше (Song [] listOfSongs). Однако я не знаю, как соединить этот массив с тремя другими свойствами и как поместить песни в этот массив. Есть предложения?

Ответы [ 3 ]

1 голос
/ 24 марта 2020

если вы не хотите менять песни, вы можете просто поместить их в конструктор:

public PlayList(String title, String genre, Boolean privatePlaylist, Song[] songs) {
    this.title = title;
    this.genre = genre;
    this.privatePlaylist = privatePlaylist; //original constructor wasn't assigning this property
    this.listOfSongs = listOfSongs;
  }

, если список песен не должен быть добавлен в конструктор (т.е. будет обновлено) Я бы использовал ArrayList, чтобы вы могли изменить размер:

    // Field:
private ArrayList<Song> listOfSongs;

// Constructor
public PlayList(String title, String genre, Boolean privatePlaylist) {
        this.title = title;
        this.genre = genre;
        this.privatePlaylist = privatePlaylist; //original constructor wasn't assigning this property
        this.listOfSongs = new ArrayList<>();
}

// To edit the songs:
public void setListOfSongs (ArrayList<Song> listOfSongs) {
     this.listOfSongs = listOfSongs;
}
0 голосов
/ 24 марта 2020

Ваши переменные экземпляра не инициализируются с использованием параметров конструктора, потому что вы не присвоили значения переменным экземпляра.

Сделайте это следующим образом:

public Playlist(String tl, String gn, Boolean priv){
    title = tl;
    genre = gn;
    privatePlaylist = priv;
}

или даже более обычным

public Playlist(String title, String genre, Boolean privatePlaylist){
    this.title = title;
    this.genre = genre;
    this.privatePlaylist = privatePlaylist;
}

Я предлагаю вам использовать ArrayList вместо массива, чтобы вам не пришлось беспокоиться о настройке размера listOfSongs. Замените

Song[] listOfSongs;

на

List<Song> listOfSongs = new ArrayList<Song>();

Теперь создайте метод, например

public void addSong(Song song) {
    listOfSongs.add(song);
}
0 голосов
/ 24 марта 2020
import java.util.ArrayList;

public class Playlist {
    public final String title;
    public final String genre;
    public final Boolean privatePlaylist;
    public final ArrayList<Song> listOfSongs;

    public Playlist(String tl, String gn, Boolean priv) {
        title = tl;
        genre = gn;
        privatePlaylist = priv;
        listOfSongs = new ArrayList<>();
    }
}

Пример использования:

public class Main {
    public static void main(String[] args) {
        Playlist pl = new Playlist("title", "genre", false);
        pl.listOfSongs.add(...);
        System.out.println(pl.title);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...