Java Generic 메소드는 클래스 유형의 매개 변수를 사용합니다.

NickJ

다음 코드가 있습니다.

public class Animal {

    public <T extends Animal> void doSomething(T instance) {
       //do stuff
    }

}

그러나 메소드에 대한 매개 변수는 호출되는 클래스와 동일한 유형이어야합니다. 예를 들어 이것은 유효합니다 :

public class Dog extends Animal {} 
public class Cat extends Animal {} 

Dog dog1 = new Dog();
Dog anotherDog = new Dog();
dog1.doSomething(anotherDog);

그러나 이것은 유효하지 않습니다.

dog1.doSomething(new Cat());

모든 하위 클래스에서 메서드를 구현하지 않고이를 달성 할 수있는 방법이 있습니까? 하위 클래스가 많고 너무 반복적이기 때문에 그렇게하고 싶지 않습니다.

롤랜드 크로이 저

재정의 클래스를 참조하는 암시적인 방법이 없다고 생각합니다.

설명 된 효과를 갖기 위해 필요한 하위 유형을 동물 자체에 대한 일반 인수로 선언 할 수 있습니다.

public class Animal<T extends Animal<?>> {

    public void doSomething(final T instance) {
       //do stuff
    }

}


public class Dog extends Animal<Dog> {}
public class Cat extends Animal<Cat> {}

그 벌은 실제로 여기에서 어디로 가고 싶은지 상상하기 어렵습니다. 두 마리의 개만 할 수 있지만 두 마리의 다른 동물은 할 수 없지만 같은 코드로 구현할 수있는 메서드는 무엇일까요?

이것은 종종 일반적인 추상베이스 클래스가 장기적으로 도움이되는지 과장하고 싶은 지점입니다. 모든 동물에 대해 구현 코드가 다른 것으로 판명되면 독립 클래스의 공통 인터페이스가 더 나은 옵션 일 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

매개 변수화 된 클래스를위한 Java Generic : 무제한 와일드 카드 대 원시 유형

분류에서Dev

Java Object Array-빈 매개 변수를 사용하여 메소드를 생성하고 Book? 클래스의 객체 배열을 반환합니다.

분류에서Dev

Java Object Array-빈 매개 변수를 사용하여 메소드를 생성하고 Book? 클래스의 객체 배열을 반환합니다.

분류에서Dev

일반 Java 함수에서 사용하는 "유형 매개 변수"의 "클래스 유형"

분류에서Dev

java에서 동일한 클래스의 메소드에 매개 변수와 동일한 클래스의 객체를 전달하는 것이 안전합니까?

분류에서Dev

클래스를 열거 형의 생성자 매개 변수로 전달한 다음 메소드에서 반환 유형으로 사용할 수 있습니까?

분류에서Dev

JAVA : 클래스 유형을 숨기는 유형 매개 변수

분류에서Dev

C # : Java와 같은 메서드를 재정의 할 때 매개 변수의 하위 클래스 / 하위 유형을 대체합니까?

분류에서Dev

Generic 클래스를 매개 변수로 사용하는 메소드를 어떻게 스텁 할 수 있습니까?

분류에서Dev

다른 클래스 Java의 객체로 매개 변수를 사용하여 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

Java에서 유형 매개 변수가 제공하는 클래스를 상속 할 수 있습니까?

분류에서Dev

매개 변수 유형의 클래스를 반환하는 메소드로 인터페이스 구현

분류에서Dev

사용자 정의 Java 인터페이스를 매개 변수로 취하는 jni 호출 Java 메소드

분류에서Dev

유형 매개 변수 'T'는 클래스 유형이어야합니다.

분류에서Dev

Symfony 3는 서비스가 아닌 클래스의 매개 변수를 사용합니다.

분류에서Dev

어떻게 자바에서 다른 클래스의 매개 변수와 메소드를 호출하는?

분류에서Dev

일반 클래스 매개 변수를 사용하여 하위 유형으로 메서드를 재정의 할 수없는 이유에 대한 설명

분류에서Dev

Axios는 중복 매개 변수 유형 스크립트를 사용합니다.

분류에서Dev

Java 메소드 참조에서 유형 매개 변수 사용

분류에서Dev

나는 매개 변수로 클래스의 구현을 사용하여 메소드를 오버라이드 (override) 할 수없는 이유

분류에서Dev

형식 매개 변수가있는 메서드를 사용하는 형식 클래스에 대한 생성자를 정의합니까?

분류에서Dev

메서드에 매개 변수로 전달 된 클래스 유형을 사용하여 지역 변수를 정의하는 방법

분류에서Dev

Java 내부 클래스에서 바인딩 된 유형 매개 변수를 정의하는 방법

분류에서Dev

클래스에서 개인 구조를 정의 할 때 함수 매개 변수 또는 리턴 유형으로 어떻게 사용합니까?

분류에서Dev

일부 부모 클래스에서 하위 클래스 유형의 매개 변수를 사용한 오버로드가 선택되지 않는 이유

분류에서Dev

Java 메소드는 목록 인터페이스를 매개 변수로 허용합니다.

분류에서Dev

Java 언어 사양의 정적 메소드 및 유형 매개 변수

분류에서Dev

함수 (C ++)의 입력 매개 변수로 매개 변수 팩과 유형 이름을 사용하는 클래스를 가져 오는 방법

분류에서Dev

"rect"클래스는 "screen.blit ()"메소드의 매개 변수가 될 수 없습니다.

Related 관련 기사

  1. 1

    매개 변수화 된 클래스를위한 Java Generic : 무제한 와일드 카드 대 원시 유형

  2. 2

    Java Object Array-빈 매개 변수를 사용하여 메소드를 생성하고 Book? 클래스의 객체 배열을 반환합니다.

  3. 3

    Java Object Array-빈 매개 변수를 사용하여 메소드를 생성하고 Book? 클래스의 객체 배열을 반환합니다.

  4. 4

    일반 Java 함수에서 사용하는 "유형 매개 변수"의 "클래스 유형"

  5. 5

    java에서 동일한 클래스의 메소드에 매개 변수와 동일한 클래스의 객체를 전달하는 것이 안전합니까?

  6. 6

    클래스를 열거 형의 생성자 매개 변수로 전달한 다음 메소드에서 반환 유형으로 사용할 수 있습니까?

  7. 7

    JAVA : 클래스 유형을 숨기는 유형 매개 변수

  8. 8

    C # : Java와 같은 메서드를 재정의 할 때 매개 변수의 하위 클래스 / 하위 유형을 대체합니까?

  9. 9

    Generic 클래스를 매개 변수로 사용하는 메소드를 어떻게 스텁 할 수 있습니까?

  10. 10

    다른 클래스 Java의 객체로 매개 변수를 사용하여 메서드를 호출하는 방법은 무엇입니까?

  11. 11

    Java에서 유형 매개 변수가 제공하는 클래스를 상속 할 수 있습니까?

  12. 12

    매개 변수 유형의 클래스를 반환하는 메소드로 인터페이스 구현

  13. 13

    사용자 정의 Java 인터페이스를 매개 변수로 취하는 jni 호출 Java 메소드

  14. 14

    유형 매개 변수 'T'는 클래스 유형이어야합니다.

  15. 15

    Symfony 3는 서비스가 아닌 클래스의 매개 변수를 사용합니다.

  16. 16

    어떻게 자바에서 다른 클래스의 매개 변수와 메소드를 호출하는?

  17. 17

    일반 클래스 매개 변수를 사용하여 하위 유형으로 메서드를 재정의 할 수없는 이유에 대한 설명

  18. 18

    Axios는 중복 매개 변수 유형 스크립트를 사용합니다.

  19. 19

    Java 메소드 참조에서 유형 매개 변수 사용

  20. 20

    나는 매개 변수로 클래스의 구현을 사용하여 메소드를 오버라이드 (override) 할 수없는 이유

  21. 21

    형식 매개 변수가있는 메서드를 사용하는 형식 클래스에 대한 생성자를 정의합니까?

  22. 22

    메서드에 매개 변수로 전달 된 클래스 유형을 사용하여 지역 변수를 정의하는 방법

  23. 23

    Java 내부 클래스에서 바인딩 된 유형 매개 변수를 정의하는 방법

  24. 24

    클래스에서 개인 구조를 정의 할 때 함수 매개 변수 또는 리턴 유형으로 어떻게 사용합니까?

  25. 25

    일부 부모 클래스에서 하위 클래스 유형의 매개 변수를 사용한 오버로드가 선택되지 않는 이유

  26. 26

    Java 메소드는 목록 인터페이스를 매개 변수로 허용합니다.

  27. 27

    Java 언어 사양의 정적 메소드 및 유형 매개 변수

  28. 28

    함수 (C ++)의 입력 매개 변수로 매개 변수 팩과 유형 이름을 사용하는 클래스를 가져 오는 방법

  29. 29

    "rect"클래스는 "screen.blit ()"메소드의 매개 변수가 될 수 없습니다.

뜨겁다태그

보관