java泛型问题
ringa_lee
ringa_lee 2017-04-17 15:06:07
0
6
245

有如下一个类:

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>
求解惑

ringa_lee
ringa_lee

ringa_lee

모든 응답(6)
刘奇

첫 번째는 제네릭 메소드입니다(매개변수 목록은 하나 이상의 제네릭 유형을 사용합니다). () 메소드 매개변수 목록에 사용되는 제네릭 유형이 메소드 앞에 나열됩니다.

https://docs.oracle.com/javase/tutorial/extra/generics/methods.html
http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html

PHPzhong

이 E 유형은 클래스 정의에 지정된 일반 유형 T가 아니기 때문입니다

黄舟

Java 메소드의 일반 매개변수는 반환값 앞에 기록됩니다. C#은 메소드 이름 뒤에 작성됩니다.

巴扎黑

음, 제가 잘못 이해한 건지 모르겠네요. .
get의 T는 정식 매개변수는 아니지만 반환 유형이 T임을 선언하는 것 맞죠?

페이지 함수는 매개변수에 페이지가 있고 페이지 자체가 E 유형이라는 것만 지정합니다.

小葫芦

이것은 일반적인 메소드입니다. 즉, 유형 매개변수가 E인 Page를 수신하고 Page를 반환한다는 의미입니다

阿神

find 메소드의 매개변수와 반환값 유형은 모두 페이지인데, 이 페이지도 쓰지 않고 실행할 수 있지만 경고가 뜹니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿