아마도 Writable
을 구현하면 직렬화 가능 객체가 표시되기 때문일 수 있습니다. DataInput
및 DataOutput
은 바이트 스트림과 직접적인 관련이 있습니다. 그러나 값을 직접 읽고 기본 유형으로 저장하는 데 아무런 해가 없습니다.DataInput 및 DataOutput를 직접 사용할 수있는 경우 Writable을 사용하는 이유는 무엇입니까?
즉, readFields()
과 write()
메서드의 사용은 쓸모없는 것처럼 보이며 모듈성의 관점에서만 사용할 수 있습니다. 인스턴스 변수에 대한 DataInput
및 DataOutput
클래스의 객체를 만들고 입력을 직접 입력하면 (스캐너 유틸리티 클래스와 같은 DataInput
및 DataOutput
사용) 매우 간단합니다. 그것들을위한 인터페이스를 만들고 미리 정의 된 상자 클래스 나 우리 고유의 사용자 정의 클래스에있는 명백한 메서드를 구현하는 것은 내가 볼 수있는 한 구문 론적 설탕처럼 보입니다.
볼 수있는 것이 있으면 내가 보도록 도와주세요.
업데이트 : DataInput
및 DataOutput
클래스는 직렬화 된 객체를 생성합니다! : O
'Writable'은 직렬화 가능 객체를 생성하지 않으며,'DataInput' 또는'DataOutput'도 수행하지 않습니다. 당신이 말한 것을 분명히하고, 당신이 요구하는 것을 내버려 두지 마십시오. – EJP
가능한 [Writable ...의 이유는 무엇입니까?] (http://stackoverflow.com/q/17203661/207421). – EJP
@EJP 모두들 그렇습니다. [여기] (https://acadgild.com/blog/writable-and-writablecomparable-in-hadoop/) 및 [여기] (https://www.google.co.in/url?sa=t&rct=j&q= 및 ESRC = S & 소스 = 웨브 CD = 1 CAD = RJA 및 uact = 8 VED = 0ahUKEwiRs4aNkuvNAhUJPxoKHTWgDCEQFggdMAA 및 URL = HTTPS % 3A % 2F % 2Fhadoop.apache.org % 2Fdocs % 2Fr2.6.1 % 2Fapi % 2Forg % 2Fapache % 2Fhadoop % 2Fio % 2FWritable.html 및 USG = AFQjCNEz5Mh9TeOMqXd8AX74QxlfFMzCzw 및 SIG2 = 35nxbPRITVf6lfzivGUSjw) . 두 번째 의견의 질문은 다른 것에 대한 것입니다. 제목을 읽지 마라! –