Impl 클래스 유형으로 부모 클래스에서 객체를 반환하는 방법은 무엇입니까?

회원 사운드

모든 구현 클래스에 부모 필드를 기본값으로 초기화하는 기본 메서드를 제공하고 싶습니다. 따라서 각 Impl 클래스 내에서 이러한 초기화를 다시 정의 할 필요가 없습니다.

public abstract class Parent {
    private String name;

    public static Parent defaultParent() {
        Parent parent = new Parent();
        //fill default field values
        parent.name = "default name";
        return parent;
    }
}

public class Child extends Parent {

}

이제 전화 할 수 있습니다 Child.defaultParent(). 그러나 그것은 나에게 유형의 객체를 반환합니다 Parent. 이런 식으로 객체가 Child암시적인 객체가 될 수 있습니까? 그래서 defaultParent메소드는 항상 구현 클래스의 유형을 반환합니까?

아마도 Java 8, 기능적 인터페이스 또는 이와 유사한 것입니까?

Shmosel

다음은 Java 8을 사용하는 한 가지 방법입니다.

public abstract class Parent {
    private String name;

    public static <T extends Parent> T defaultParent(Supplier<T> constructor) {
        T parent = constructor.get();
        //fill default field values
        parent.name = "default name";
        return parent;
    }
}

public class Child extends Parent {

}

다음과 같이 정적 메서드를 호출 할 수 있습니다.

Child c = Parent.defaultParent(Child::new);

또는 정적 팩토리 메서드 대신 생성자 오버로드를 사용할 수 있습니다.

public abstract class Parent {
    private String name;

    public Parent(boolean useDefaults) {
        if (useDefaults) {
            //fill default field values
            this.name = "default name";
        }
    }
}

public class Child extends Parent {
    public Child(boolean useDefaults) {
        super(useDefaults);
    }

    public Child() {
        super(false);
    }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Java에서 모든 클래스의 객체를 맵으로 변환하는 방법은 무엇입니까?

분류에서Dev

함수 반환 유형이 부모 클래스 일 때 자식 클래스의 개체를 반환하는 방법은 무엇입니까?

분류에서Dev

메타 클래스에서 클래스의 부모 클래스를 얻는 방법은 무엇입니까?

분류에서Dev

다형성 함수에서 자식 클래스 인스턴스 대신 부모 클래스 인스턴스를 전달하는 방법은 무엇입니까?

분류에서Dev

부모 클래스 함수에서 상속 된 객체를 사용하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 부모 클래스의 모든 자식 객체를 자동으로 만드는 방법은 무엇입니까?

분류에서Dev

부모 인터페이스를 구현하는 클래스의 생성자로 interface 유형의 객체를 초기화하는 방법은 무엇입니까?

분류에서Dev

모든 객체의 클래스의 반환 유형을 사용하여 유형 간 메소드를 선언하는 방법은 무엇입니까?

분류에서Dev

jQuery에서 특정 클래스로 부모 요소를 선택하는 방법은 무엇입니까?

분류에서Dev

내부 클래스 전용 인 반환 유형에서 중첩 된 네임 스페이스를 단축하는 방법은 무엇입니까?

분류에서Dev

유형을 사용하여 런타임에서 내부 클래스로 클래스를 정의하는 방법은 무엇입니까?

분류에서Dev

Python 데이터 유형은 모두 C 클래스를 기반으로하는 객체입니까?

분류에서Dev

내부 Perl 클래스의 딥 클로닝-복사 된 객체에서 메서드를 사용하는 방법은 무엇입니까?

분류에서Dev

참조 유형과 부모 참조 유형에서 클래스 객체를 호딩하는 것의 차이점은 무엇입니까

분류에서Dev

.NET DI에서 유형 제약 조건으로 클래스를 주입하는 방법은 무엇입니까?

분류에서Dev

새로 만들지 않고 객체 클래스를 반환하는 방법은 무엇입니까?

분류에서Dev

Python에서 유형 / 클래스를 동적으로 정의하는 방법은 무엇입니까?

분류에서Dev

객체 인스턴스에서 클래스 모듈에 액세스하는 방법은 무엇입니까?

분류에서Dev

Qt 객체 (QgraphicsItem)를 C ++ 클래스 객체로 변환하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Python 3의 내부 클래스 내에서 객체를 동적으로 초기화하는 방법은 무엇입니까?

분류에서Dev

xcode에서 서로 두 클래스의 객체를 사용하는 방법은 무엇입니까?

분류에서Dev

모델 변환에서 내부 클래스를 일반 클래스로 변환하는 방법

분류에서Dev

Ruby에서 클래스 변수를 혼합 모듈의 동적으로 생성 된 클래스 메서드에 전달하는 방법은 무엇입니까?

분류에서Dev

Kotlin에서 클래스의 모든 필드를 동적으로 탐색하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 클래스를 인스턴스화하는 객체의 유형은 무엇입니까?

분류에서Dev

외부 클래스에서 내부 클래스의 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

ES6에서 클래스로 객체를 확장하는 방법은 무엇입니까?

분류에서Dev

클래스 개체의 모든 메서드 결과를 하나의 목록으로 반환하는 방법은 무엇입니까?

분류에서Dev

한 활동에서 다른 활동으로 클래스 객체 유형의 ArrayList를 보내는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Java에서 모든 클래스의 객체를 맵으로 변환하는 방법은 무엇입니까?

  2. 2

    함수 반환 유형이 부모 클래스 일 때 자식 클래스의 개체를 반환하는 방법은 무엇입니까?

  3. 3

    메타 클래스에서 클래스의 부모 클래스를 얻는 방법은 무엇입니까?

  4. 4

    다형성 함수에서 자식 클래스 인스턴스 대신 부모 클래스 인스턴스를 전달하는 방법은 무엇입니까?

  5. 5

    부모 클래스 함수에서 상속 된 객체를 사용하는 방법은 무엇입니까?

  6. 6

    파이썬에서 부모 클래스의 모든 자식 객체를 자동으로 만드는 방법은 무엇입니까?

  7. 7

    부모 인터페이스를 구현하는 클래스의 생성자로 interface 유형의 객체를 초기화하는 방법은 무엇입니까?

  8. 8

    모든 객체의 클래스의 반환 유형을 사용하여 유형 간 메소드를 선언하는 방법은 무엇입니까?

  9. 9

    jQuery에서 특정 클래스로 부모 요소를 선택하는 방법은 무엇입니까?

  10. 10

    내부 클래스 전용 인 반환 유형에서 중첩 된 네임 스페이스를 단축하는 방법은 무엇입니까?

  11. 11

    유형을 사용하여 런타임에서 내부 클래스로 클래스를 정의하는 방법은 무엇입니까?

  12. 12

    Python 데이터 유형은 모두 C 클래스를 기반으로하는 객체입니까?

  13. 13

    내부 Perl 클래스의 딥 클로닝-복사 된 객체에서 메서드를 사용하는 방법은 무엇입니까?

  14. 14

    참조 유형과 부모 참조 유형에서 클래스 객체를 호딩하는 것의 차이점은 무엇입니까

  15. 15

    .NET DI에서 유형 제약 조건으로 클래스를 주입하는 방법은 무엇입니까?

  16. 16

    새로 만들지 않고 객체 클래스를 반환하는 방법은 무엇입니까?

  17. 17

    Python에서 유형 / 클래스를 동적으로 정의하는 방법은 무엇입니까?

  18. 18

    객체 인스턴스에서 클래스 모듈에 액세스하는 방법은 무엇입니까?

  19. 19

    Qt 객체 (QgraphicsItem)를 C ++ 클래스 객체로 변환하는 가장 좋은 방법은 무엇입니까?

  20. 20

    Python 3의 내부 클래스 내에서 객체를 동적으로 초기화하는 방법은 무엇입니까?

  21. 21

    xcode에서 서로 두 클래스의 객체를 사용하는 방법은 무엇입니까?

  22. 22

    모델 변환에서 내부 클래스를 일반 클래스로 변환하는 방법

  23. 23

    Ruby에서 클래스 변수를 혼합 모듈의 동적으로 생성 된 클래스 메서드에 전달하는 방법은 무엇입니까?

  24. 24

    Kotlin에서 클래스의 모든 필드를 동적으로 탐색하는 방법은 무엇입니까?

  25. 25

    파이썬에서 클래스를 인스턴스화하는 객체의 유형은 무엇입니까?

  26. 26

    외부 클래스에서 내부 클래스의 함수를 호출하는 방법은 무엇입니까?

  27. 27

    ES6에서 클래스로 객체를 확장하는 방법은 무엇입니까?

  28. 28

    클래스 개체의 모든 메서드 결과를 하나의 목록으로 반환하는 방법은 무엇입니까?

  29. 29

    한 활동에서 다른 활동으로 클래스 객체 유형의 ArrayList를 보내는 방법은 무엇입니까?

뜨겁다태그

보관