홈>
다음 코드를 발견했습니다 :
class BindableTextInputEditText : TextInputEditText {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
fun bind() {
setTextAndCursor(text)
}
private fun TextInputEditText.setTextAndCursor(text: String?) {
}
}
setTextAndCursor가 확장 인 이유는 확실하지 않습니다. 비공개 인 경우 일반적으로 대부분의 확장 프로그램처럼 일반적으로 사용할 수 없습니다. 그렇다면 왜 일반적인 기능이 아닌 확장 기능을 사용해야합니까?
-
답변 # 1
-
답변 # 2
확장자로 선언하면any
TextInputEditText
에서 호출 할 수 있습니다.this
뿐만 아니라 (또는 다른BindableTextInputEditText
사례 ). 다음과 같은 방법을 사용할 수 있습니다fun bindOther(textField: TextInputEditText, text: String?) { textField.setTextAndCursor(text) }
이러한 사용법은 이전에 클래스에 있었으며 제거되었습니다.
관련 자료
- javascript - 2019 년에 사용 된 IFrame은 무엇입니까?
- python - 탭 완성기에 사용되는 디림
- reactjs의 노드는 무엇입니까?
- go - golang - 원자 읽기는 무엇을 위해 사용됩니까?
- c# - 서비스 란 무엇이며 왜 ASPNET Core에 추가합니까?
- html - 마우스 오버 이벤트에는 어떤 것이 있습니까?
- bixby - 계획이 확인되지 않은 경우 수행 할 작업
- c++ - std - : initializer_list 및 c 배열 []의 장단점은 무엇입니까?
- encryption - 개인 키는 무엇이며 공개는 무엇입니까?
- sql server - T-SQL에서 사용되는 '키워드'는 무엇입니까?
- http 프록시의 용도는 무엇입니까?
- reactivex - RxJS의 실제 예는 무엇입니까?
- oracle - 데이터베이스에서 "(TNS V1-V3)"연결이란 무엇입니까
- google.maps.places.Autocomplete - googlemapsplacesautocomplete - 생성 된 sku는 무엇입니까
- 액체에서 단위 "w"와 "x"는 무엇입니까?
- python - Kivy 색상 코드는 무엇이며 어떻게 작동합니까?
- 전체 디스크 스캔에서 greenplum의 장점은 무엇입니까?
- PHP의 화살표 기능은 무엇이며 어떻게 사용합니까?
- Haxe에서 밑줄의 용도는 무엇입니까?
- android - 어떤 유형의보기가 사용됩니까?
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- vue.js - axios를 사용하여 서버에 이미지를 업로드하는 방법
- python - 문자열에서 특정 문자 제거
특정의 경우, 확장은 수신자 클래스 (
TextInputEditText
)를 확장하는 클래스에서 선언됩니다. ), 일반 메소드를 선언하면 확장과 동일한 방식으로 작동하거나 적어도 동일한 호출 구문을 생성합니다. 그래서 나는 여기에 확장을 사용하는 것이 의미가 없다고 말하고 싶습니다 (일부 정적 메소드의 성능을 언급 할 수 있습니다.즉, 일반적으로 비공개 확장 프로그램을해제할 수 없습니다. 확장의 요점은 일반적인 사용법 일뿐만 아니라
이것은 프로그래머가 내장 메소드와 확장 메소드를 비슷하게 호출 할 수있게 해줍니다. 주요 목표는 좋은 구문이기 때문에 개인 상황에서도 유용하게 사용할 수 있습니다.object.method()
를 사용하여보다 자연스럽게 정적 도우미를 표현하는 방법입니다. 구문.setTextAndCursor
인 경우TextInputEditText
에 있기를 원했던 방법입니다 , 그러나 그것은 당신의 개인 상황에서만 유용하다. 그리고 그것을 그것을 개인 확장으로 선언하는 것이 합리적이다 (이것이 당신의 이상한 시나리오 인 그 클래스의 서브 클래스에 이미있는 경우를 제외하고).