2017-11-15 4 views
0

https://imgur.com/nb6sjuK자바 - ArrayList를 <> 및 LinkedList의 <> - 식별자로 클래스

나는 식별자이 예에서, 내가 프로그래밍에 새로 온 사람과 내가 실현하는 ArrayList<String>가 생성하는 것입니다 무엇을 얻을하지 않습니다 문자열 목록과 LinkedList<String>과 동일하지만 식별자에서 클래스를 푸시 (예 : LinkedList<Song> - 및 Song은 클래스)하면 어떻게됩니까? 미리 감사드립니다.

public class Main { 
    private static ArrayList<Album> albums = new ArrayList<Album>(); 

    LinkedList<Song> playlist = new LinkedList<Song>(); 

    public static void main(String[] args) { 


    // write your code here 

     Album album = new Album("StormBringer" , "Deep Purple"); 
     album.addSong("Stormbringer" , 4.6); 
     album.addSong("Love don't mean a thing" , 4.22); 
+2

문자열은 노래 – Eran

+0

과 같습니다. https://docs.oracle.com/javase/8/docs/technotes/guides/language/generics.html – Yash

+0

코드 예제를 텍스트가 아닌 이미지로 추가하십시오. 이렇게하면 더 쉽게 읽을 수 있습니다. – Simulant

답변

1

하지만 무슨 일?

은 우선 그것이이 Type의 식별자 아니다, 이것은 당신이 <> 사이 Type를 전달하는 방법 Generics 작품, 그래서 컴파일러는이 일반 클래스 (여기 컬렉션)에 대한 예상 Type을 알고있다. 그리고 컬렉션 List, Set ...은 Generics 구현의 좋은 예입니다.

과 같은 SongStringjava.lang 패키지에 미리 정의 된 클래스 인 클래스는, 그래서 당신은 당신의 컬렉션에 클래스를 통과 할 때, 컴파일러는이 컬렉션의 모든 요소가이 Type의 것으로 기대 . 코드에서 예를 들어

은 :

LinkedList<Song> playlist = new LinkedList<Song>(); 

모든 playlist 항목은 Song 클래스의 인스턴스가 될 것으로 예상된다.

+1

고마워요, 지금 당장 의미가 있습니다 –

+0

@TornikeShelia 도와 주니 기쁩니다. –

2

StringSong 같은 클래스도 클래스입니다. 즉,이 클래스의 객체 만 List에 삽입 할 수 있습니다. 다른 클래스의 객체는 유형이 일치하지 않기 때문에 추가 할 수 없습니다. 그렇게하려고하면 컴파일 오류가 발생합니다. 목록은 유형 저장입니다. 이 기능은 generics입니다. 당신이 identifierclass을 누르면

관련 문제