2014-12-07 3 views
0

문자열을 T 형식으로 변환하려고 시도했지만 "변환 할 수없는 형식, 'java.lang.String'을 'T'로 변환 할 수 없습니다. 그러나 < T에서"< T> "를 제거하면 T는 비슷합니다 < T .? 코드 < T는 Comparable를 확장에>> 그리고, 그것은 괜찮습니다> 그 해결의 차이점은 무엇 아래 이다.<extends Comparable>와 <extends Comparable < T >>의 차이점은 무엇입니까?

public class Graph<T extends Comparable<T>> { 

public void createGraph(Scanner in) { 
    String line; 
    String[] elements; 
    while (in.hasNextLine()) { 
     line = in.nextLine(); 
     elements = line.split("\\s+"); 
     insertVertex((T)elements[0]); // << This is the part 
    } 

답변

0

그래프 유형 T이다 그건 내가의 그래프를 가질 수 있다는 것을 의미합니다 예 : Person s

그런 다음 createGraph에 시도해보십시오. 그래프에 String 버텍스를 삽입합니다. 그러나 StringPerson으로 전송할 수 없습니다. 당신이 Graph<String>을 만드는 createGraph 방법을 원하는 경우에

, 당신은 다음과 같이 그것에게 static을해야합니다

public Graph<String> createGraph(Scanner in) { 
    String line; 
    String[] elements; 
    Graph<String> graph = new Graph<>(); 
    while (in.hasNextLine()) { 
     line = in.nextLine(); 
     elements = line.split("\\s+"); 
     graph.insertVertex(elements[0]); 
    } 
    // ... 
    // Anything else, like adding edges 
    // ... 
    return graph; 
} 

편집를 : 코드는 문제없이 컴파일 이유는 당신이를 제거 할 때 <T>Comparable<T>으로 변경하면 (사람 그래프 나 문자열 그래프 대신) Comparables의 그래프가됩니다. 그러면 String과 Person을 모두 추가해도 문제가 없습니다.

+0

이것은 정확히 내가 원했던 것입니다. 감사. – KeepCoding

관련 문제