Java 범용 선언 방법을 하위 유형으로 되돌리는 방법

일반적인 전형적인 사용 장면은 집합이다.대부분의 경우 집합이 동질(같은 유형)인 것을 감안하여 매개 변수 유형을 성명함으로써 유형 전환의 번거로움을 피할 수 있다.본고는 본인이 Spring Security 원본을 읽을 때 겪는 범용 귀속 모델에 관한 문제를 토론하고자 합니다.
선언 방법은 하위 유형을 반환합니다.
Spring Security의 원본 코드에 Provider Manager Builder 인터페이스가 있습니다.

public interface ProviderManagerBuilder<B extends ProviderManagerBuilder<B>> extends SecurityBuilder<AuthenticationManager> {
  B authenticationProvider(AuthenticationProvider authenticationProvider);
}
기존 AuthenticationManagerBuilder

public class AuthenticationManagerBuilder extends AbstractConfiguredSecurityBuilder<AuthenticationManager, AuthenticationManagerBuilder> implements ProviderManagerBuilder<AuthenticationManagerBuilder> {

  //...

  public AuthenticationManagerBuilder authenticationProvider(
    AuthenticationProvider authenticationProvider) {
    this.authenticationProviders.add(authenticationProvider);
    return this;
  }

  //...

}
위쪽에 방해 항목이 많으니 우리가 간소화하자
인터페이스 A는 다음과 같이 정의됩니다.

public interface A<T extends A<T>> {

  T add();

} 

설명: A 인터페이스는 하나의add 방법만 있고 일반 T를 되돌려줍니다.T의 성명은 약간의 용서가 있다.
A 인터페이스 구현 클래스 B

public class B implements A<B> {

  @Override
  public B add() {
    return null;
  }

} 

이 클래스 B에서add 방법은 형식 B를 되돌려줍니다.즉, 인터페이스 A에서 설명하는 방법은 하위 유형 B의 존재를 알지 못한다. 계승과 범형을 통해 반환값의 동적 어댑터 유형을 넣을 수 있다. 이 모든 것은 > 덕분이다.
범용 반복 모드(Recurring Generic Pattern)

public interface A

public abstract class Enum<E extends Enum<E>>
  implements Comparable<E>, Serializable {
  //...
}

자바의 모든 매거 유형은 은밀한 계승자바입니다.lang. Enum, 현실적인 계승 성명 매거 유형, 심지어java를 통합하는 것을 허용하지 않습니다.lang. Enum도 컴파일러가 허용하지 않습니다.
만약 매거류 StatusCode가 있다고 가정하면, 그 등가의 성명은 다음과 같다.
public class StatusCode extends Enum
이제 범용 제약을 검증해 보겠습니다.
1. Enum, 그래서 E=StatusCode;
2. >와 E=StatusCode에 따라 얻을 수 있으며, >>;
3.publicclass StatusCode extends Enum 두 번째 단계의 결론이 명확하게 성립되었기 때문이다.
왜 Enum의 성명이 이렇게 빙빙 돌았습니까?그냥 Enum 하면 안 돼요?
Enum가 Comparable 인터페이스를 구현했기 때문에 compareTo 방법이 있습니다.
public int compareTo(E o) {}
은 `compareTo`를 진행하는 호출 대상 유형과 매개 변수 유형이 엄격하게 일치하도록 강제적으로 제약하고 하위 클래스와 슈퍼 클래스 또는 형제 클래스 간의 비교가 나타나지 않습니다.
범용 귀속 모델과 계승
범용 귀속 모드interface A>는 매개 변수 유형 T를 구속하는 데 사용되며, 유형 A의 하위 클래스를 요구합니다.
B implements A를 계승하고 실현하는 것을 고려하면 매개 변수 유형과 실체 유형은 일치합니다.이런 클래스 A의 방법 서명에 매개 변수 유형 T가 관련된 부분은 실현 클래스에서 실현 클래스 자체를 위해 유형 시스템을 더욱 엄격하게 한다.
위에서 설명한 Java범형이 성명 방법을 하위 유형으로 되돌리는 방법은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기