2017-12-02 12 views
0

를 사용 하는가?은 어떻게 유전 클래스 매개 변수</p> <pre><code>public static <T> T parse(String json, Class<T> clazz) { T result = null; result = mapper.readValue(json, clazz); return result; } </code></pre> <p>하자가있는 제네릭 클래스의 형식 매개 변수 클래스

public class Person<T> 
{ 
    private T name; 

    public T getName() 
    { 
     return name; 
    } 

    public void setName (T name) 
    { 
     this.name = name; 
    } 


} 

변수를 전달하는 방법은 무엇입니까?

Person person = new Person(); 

parse(json, person) // ???? 
+1

아마도 _genetic_ 대신 _generic_을 의미 할 것입니다. –

+0

답변에 대한 질문에 올바르게 답하면 동의하십시오. 나는 ~ 30 개의 질문을했고 오직 1 개의 대답 만 수락했음을 알았습니다. 대답을 받아들이는 것은 사이트에서 중요합니다. – user1803551

답변

0

여기부터 시도해 볼 수 있습니다. 귀하의 요구 사항에 따라 휴식을 취해야합니다.

public class Person<T> 
{ 
    private T name; 
    public T getName(){ 
     return name; 
    } 

    public void setName (T name){ 
     this.name = name; 
    } 

    public static void main(String[] args){ 
     Person<String> p = new Person<String>(); 
     p.setName("Some Name"); 
     System.out.println(p.getName()); 
    } 

} 

이 페이지를 참조하십시오 : https://docs.oracle.com/javase/tutorial/java/generics/types.html

+0

클래스를 Person으로 작성하는 경우
Person p = new Person()
및 parse (json, p) ??
하지만이 경우 오류가 발생합니다 –

+0

여기에서 성취하고자하는 것이 무엇인지 확실하지 않지만 T를 원하는 모든 클래스로 대체 할 수 있습니다. Person p = new Person ();과 같은 것을 시도해 볼 수 있습니다. 위에서 언급 한 문서를 읽으십시오. 작성, 인스턴스 작성 및 기타 예제도 포함되어 있습니다. – St1id3r

0

귀하의 JSON은 개체의 name 속성은 String 것을 제안합니다. 따라서 객체는 다음과 같이 보일 것입니다

class Person { 
    String name; 
    // getter and setter 
} 

이 경우 POJO 일반을 가질 이유가 없습니다. 마지막 코드 블록은 이것이 사실임을 암시합니다. 다른 표현이 가능한 경우에만 name 제네릭 형식을 원할 수 있습니다. List<T>이 제네릭 형식을 사용하는 방식을 생각해보십시오. Person<String>, Person<StringBuilder>, Person<MyObject> 모두 모두 다른 유형의 name을 지정 하시겠습니까? 아마도 그렇지 않습니다.

일반적인 사용법은 parse 방법으로 재생됩니다.

입니다
public static <T> T parse(String json, Class<T> clazz) 

, 당신은 유형 TClass과는 예를 T을 반환 걸릴 : parse 자바 클래스는 문자열에서 만들 수있는 매퍼에게하기 위해 JSON StringClass 형식을 사용합니다. 사용법은 (대신 마지막 코드 블록의) 될 것이다 : Person.class이 의미하는 Class<Person>입니다

Person person = parse(json, Person.class); 

Person 등의 방법으로 돌아갑니다.