有如下一个类:
public class BaseDao<T> {
public <E> Page<E> find(Page<E> page, String qlString) {
return find(page, qlString, null);
}
public T get(String id){
return (T)getById(id);
}
}
对于get方法中的T,我能够理解,即外部传入的参数化类型
但是对于find方法中的E,表示不太理解,如果是简单的规范参数,为什么在返回类型的前面还要加一个<E>
求解惑
첫 번째는 제네릭 메소드입니다(매개변수 목록은 하나 이상의 제네릭 유형을 사용합니다). () 메소드 매개변수 목록에 사용되는 제네릭 유형이 메소드 앞에 나열됩니다.
https://docs.oracle.com/javase/tutorial/extra/generics/methods.html
http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html
이 E 유형은 클래스 정의에 지정된 일반 유형 T가 아니기 때문입니다
Java 메소드의 일반 매개변수는 반환값 앞에 기록됩니다. C#은 메소드 이름 뒤에 작성됩니다.
음, 제가 잘못 이해한 건지 모르겠네요. .
get의 T는 정식 매개변수는 아니지만 반환 유형이 T임을 선언하는 것 맞죠?
페이지 함수는 매개변수에 페이지가 있고 페이지 자체가 E 유형이라는 것만 지정합니다.
이것은 일반적인 메소드입니다. 즉, 유형 매개변수가 E인 Page를 수신하고 Page를 반환한다는 의미입니다
find 메소드의 매개변수와 반환값 유형은 모두 페이지인데, 이 페이지도 쓰지 않고 실행할 수 있지만 경고가 뜹니다