Java Generics (일반 형)

11820 단어 자바범 형Class
자바 범 형 은 JDK 5 에 도 입 된 새로운 기능 으로 클래스 와 인 터 페 이 스 를 정의 할 때 형식 인 자 를 사용 할 수 있 습 니 다.
범 형 류
범 형 류 는 우리 가 가장 자주 사용 하 는 범 형 형식 이다. 다음 과 같다.
/** *     * Created by yuedong.li on 12/8/15. */
public class ToolsUtil<T> {
    /** * if-else   * @param condition    * @param t1   1 * @param t2   2 * @return    */
    public T ifThenElse(boolean condition, T t1, T t2) {
        if (condition) {
            return t1;
        }
        return t2;
    }
}

if - else 대신 도구 클래스
사용법 도 간단 해 요.
public class Main {
    public static void main(String[] args) {
        double res = new ToolsUtil<Double>().ifThenElse(1 > 2, 1.0, 2.0);
        System.out.println(res);
    }
}

일반적인 방법
수요 가 갈수 록 많아 짐 에 따라 공구 류  ToolsUtil  도구 류 를 많이 늘 려 야 할 수도 있 지만 다른 방법의 매개 변수 반환 값 등 은 아 닙 니 다.  T  ,우 리 는 입도 조정 이 필요 하 다. 이때 가 바로 범 형 방법 으로 표현 할 때 이다.
/** *     * Created by yuedong.li on 12/8/15. */
public class ToolsUtil {
    /** * if-else   * @param condition    * @param t1   1 * @param t2   2 * @param <T>    * @return    */
    public <T> T ifThenElse(boolean condition, T t1, T t2) {
        if (condition) {
            return t1;
        }
        return t2;
    }

    /** *   Email * * @param email * email * @return         */
    public static boolean checkEmail(String email) {
        boolean result = false;
        //some code about checking email string
        return result;
    }
}

위의 코드 는 우리 가 일반적인 방법 을 사용 하여  ifThenElse  함수 가 독립 되 었 습 니 다. 더 이상 만 들 필요 가 없습니다.  ToolsUtil  유사 시 는 반드시 지정 해 야 한다.
사용 방법 은 여전히 상대 적 으로 쉽다.
public class Main {
    public static void main(String[] args) {
        double res = new ToolsUtil().ifThenElse(1 > 2, 1.0, 2.0);
        System.out.println(res);
        boolean checkRes = new ToolsUtil().checkEmail("[email protected]");
        System.out.println(checkRes);
    }
}

창설  ToolsUtil  타 입 을 지정 할 필요 가 없어 서 코드 가 많이 시원해 보 여요.
우 리 는 항상 도구 류 의 방법 을 정적 으로 쓴다. 물론 일반적인 방법 도 가능 하 다.
/** *     * Created by yuedong.li on 12/8/15. */
public class ToolsUtil {
    /** *   Email * * @param email * email * @return         */
    public static boolean checkEmail(String email) {
        boolean result = false;
        //some code about checking email string
        return result;
    }


    /** * if-else   * @param condition    * @param t1   1 * @param t2   2 * @param <T>    * @return    */
    public static <T> T ifThenElse(boolean condition, T t1, T t2) {
        if (condition) {
            return t1;
        }
        return t2;
    }
}

더욱 간결 하 게 사용 하고 다음 과 같이 조작 합 니 다.
public class Main {
    public static void main(String[] args) {
        double res = ToolsUtil.ifThenElse(1 > 2, 1.0, 2.0);
        System.out.println(res);
        boolean checkRes = ToolsUtil.checkEmail("[email protected]");
        System.out.println(checkRes);
    }
}

주의해 야 할 점 은  <T>      (public private static final 등) 과 사이 에 있어 야 합 니 다.
총결산
범 형 방법 은 언제 사용 합 니까?
① 유형 제약 은 부분 에 불과 하 다.
범 형의 작용 은 전 체 를 겨냥 한 것 이 아니 라 단지 국 지적 인 것 을 겨냥 한 것 이다. 예 를 들 어  ToolsUtil  종류
② 정적 방법 은 범 형 을 처리 해 야 한다.
위의 예 에서 ifThenElse 와 같이 일반적인 정적 방법 은 범 형 을 사용 할 수 없다.
뚱뚱 헌

좋은 웹페이지 즐겨찾기