복붙노트

[SPRING] Spring 프레임 워크와 함께 generics를 사용하는 Object를 어떻게 인스턴스화합니까?

SPRING

Spring 프레임 워크와 함께 generics를 사용하는 Object를 어떻게 인스턴스화합니까?

다음과 같은 클래스가 있습니다.

class Dao<T>{
...
}

나는 이것을 원한다.

new Dao<Student>();

Spring XML 설정에서.

그게 끝날 수 있습니까? 방법?

해결법

  1. ==============================

    1.타입 지우기에 관해 읽으면 좀 더 잘 이해할 수 있습니다.

    타입 지우기에 관해 읽으면 좀 더 잘 이해할 수 있습니다.

    런타임시 일반 클래스의 유형 매개 변수가 지워집니다. 의미는, Cletus가 말했듯이, Java의 제네릭은 기본적으로 구문론적인 설탕입니다. 이것은 단지 컴파일 타임 기능 일뿐입니다.

    Spring은 런타임에 객체를 인스턴스화하기 때문에 어떤 유형의 Dao를 실제로 인스턴스화 할 수 있습니다. 실제로 Dao를 작성하고 일부 메소드에서는 Student 유형을 전달하고 다른 메소드에서는 Teacher 유형을 전달하는 것을 막을 수 없습니다.

    그래서 기본적으로 답은 Spring은 Dao 타입이 매개 변수화되고 그걸로 아무 것도 할 수 없다는 것을 전혀 모릅니다.

  2. ==============================

    2.당신은 그것을 할 수 없으며, 당신이 그것을 할 수없는 이유는 그것이 실제로 아무것도 의미하지 않는다는 것입니다. 그 말은 자바 제네릭이 통사론적인 설탕이라는 것을 의미하므로 콩을 만드는 유형은 부적절합니다. Dao (또는 Dao)를 사용하는 어떤 것에도 주입 할 수 있습니다. Dao (또는 Dao)는 주입 된 모든 유형의 암시 적 형변환을 사용합니다.

    당신은 그것을 할 수 없으며, 당신이 그것을 할 수없는 이유는 그것이 실제로 아무것도 의미하지 않는다는 것입니다. 그 말은 자바 제네릭이 통사론적인 설탕이라는 것을 의미하므로 콩을 만드는 유형은 부적절합니다. Dao (또는 Dao)를 사용하는 어떤 것에도 주입 할 수 있습니다. Dao (또는 Dao)는 주입 된 모든 유형의 암시 적 형변환을 사용합니다.

  3. from https://stackoverflow.com/questions/560867/how-do-i-instantiate-an-object-that-uses-generics-with-spring-framework by cc-by-sa and MIT license