최근 서피스 뷰 SurfaceView에 대한 안드로이드 문서를 통해보고 있었고, 난 그 다음해야 할 실제 표면을 얻을 발견추상 메소드가 재정의하지 않고 원하는 유형을 정확히 반환하는 방법은 무엇입니까?
SurfaceView.getHolder().getSurface()
표면 홀더에 대한 문서는 여기에 있습니다 : 이제 https://developer.android.com/reference/android/view/SurfaceHolder.html
SurfaceHolder는 getHolder()에서 리턴합니다. 그러면 그 홀더에서 getSurface()를 호출하여 표면을 가져올 수 있습니다. 이제 getSurface() 메서드를 확인하면 해당 메서드가 추상 메서드라는 것을 알 수 있습니다. 나는 추상적 인 메소드가 오버라이드 (override)되어야한다는 것을 생각하고 욕망 타입을 리턴 할 수있다.
그러나 여기에서는 SurfaceHolder 인 인터페이스에 대한 참조를 제공하고 메서드를 재정의 할 지점이 없다는 것을 의미하는 추상 메서드 인 getSurface()를 호출합니다. 코드가 얼마나 정확하게 적절한 표면을 확인하고 리턴하는 것은 추상 메소드에서 호출된다.
오, 이제 알 겠어.하지만 아직도 걱정스러운 건 바로 surfaceHolder가 구현하고있는 추상 기반이 정확히 무엇인가? 일반적으로 안드로이드가 인터페이스를 확장하면 대개 문서에서 알려줍니다. 예를 들어, https://developer.android.com/reference/android/view/View.html. 당신이 볼 수 있듯이 여러 인터페이스를 구현하는 추상입니다. 따라서보기가 인터페이스로 간주되는지 이해할 수 있습니다. – JustCurious
@ JustCurious SurfaceHolder는 기본 인터페이스입니다. 당신에게 반환되는 구체적인 구현은 아마 일부 내부 비공개입니다. 그러나 요점은 그것이 당신에게 중요하지 않다는 것입니다. 당신은 무엇이 당신에게 반환되는지 정확히 알 필요가 없습니다. SurfaceHolder를 구현하는지 알 필요가 있습니다. 그래도 사용자의 자만심을 충족시키기 위해 리플렉션을 사용하여 클래스 이름 및 계층 구조를 인쇄 할 수 있습니다. https://docs.oracle.com/javase/tutorial/reflect/를 참조하십시오. –