2016-10-15 3 views
0

는 현재 내가 정적 클래스의 개체를 만들 수 있습니다 프로젝트가 :Java의 클래스 객체를 어떻게 동적으로 생성 할 수 있습니까?

Song song1 = new Song(); 
song1.setTitle("Paint it Black"); 
song1.setRating(4); 
song1.setPrice(0.99); 
Song song2 = new Song("Hey Jude",4.99); 
song2.setRating(10); 

이 잘 작동하지만 하드 코드를 각각의 모든 개체를하지 않고 내가 객체를 생성 할 수 있도록 그것을하고 싶습니다 왜냐하면 당신은 그것이 길어질 수 있다고 상상할 수 있기 때문입니다. 내가 이것을 달성 할 수있는 방법이 있습니까?

기본적으로

Song song1 = new Song(); 
Song song2 = new Song(); 
Song song3 = new Song(); 
Song song4 = new Song(); 
Song song5 = new Song(); 
... 
Song songN = new Song(); 

는 사용자 입력을 기반으로 나를 위해 내 개체를 (song1, song2, song3, ... songN) 만들 수있는 하나의 알고리즘을 가지고 대신

+6

글쎄? 'List '을 원했던 것처럼 들리 겠지만, 달성하고자하는 것이 무엇인지에 관해서는 훨씬 더 명확한 질문이 필요합니다. –

+0

여기에서 수행하는 것과 비슷한 개체를 만들지 만, 프로그램의 나머지 부분에 따라 크게 달라집니다 - 사용자 또는 다른 코드와 어떻게 상호 작용합니까? 어떤 맥락인가? –

+0

괜찮아요. 그 세부 정보를 지금 추가하겠습니다. @JonSkeet – Caleb

답변

1

는 u는 얻을 말할 수 일부 텍스트 상자의 정보. 다음 코드는 다음과 같습니다

// create only once 
List<Song> songs = new ArrayList<>(); 
//at add song button click 
Song song = new Song(); 
song.setTitle(titleTextBox.getText()); 
song.setRating(ratingTextBox.getText()); 
song.setPrice(priceTextBox.getText()); 
songs.add(song); 
// add the toString() method to the Song class 
// print the list to see the elements of the list 
System.out.println(songs); 
1

당신이 할 것이다 당신의

Song song[(number of songs)]; 
for(x=0;x<=(number of songs);x++) 
{ 
    song[x] = new Song(); 
} 

노래에 액세스하려면을 chosing의 크기를 만들 for 루프와 함께 간단한 배열을 사용해보십시오

song[(song number)].setTitle(); 
1

먼저 Song 클래스 내에 대체 생성자가 필요합니다.

java.util.Collections
  • 를 사용하여 노래 객체 인스턴스화하는 루프에 대한 문서를 체크 아웃 - 당신이 뭔가를 원하는 것 같은
    private String name; 
    private int rating; 
    private double price; 
    
    public Song(String name, int rating, double price) 
    { 
        setName(name); 
        setRating(rating); 
        setPrice(price); 
    } 
    
    // setters/getters 
    

    1. 스토어의 사용자 입력이 목록를 사용하여 ... 보인다 - 또한 목록에 저장합니다.
    2. 를 사용하여 목록

    이 같은 조금 보일 수 있습니다 루프 ... 당신은에서 데이터를 얻을 것으로 예상 할

    List<String[]> userInput = new ArrayList<>(); 
    // Fill list with user input 
    List<Song> songList = new ArrayList<>(); 
    
    for(String[] tokens : userInput) 
    { 
        String name = tokens[0]; 
        int rating = Integer.parseInt(tokens[1]); 
        double price = Double.parseDouble(tokens[2]); 
    
        songList.add(new Song(name, rating, price)); 
    } 
    
    // Do something with songList 
    
  • 관련 문제