[SCALA] 스칼라 유형 매개 변수 오류, 형식 매개 변수의 회원이 아니
SCALA스칼라 유형 매개 변수 오류, 형식 매개 변수의 회원이 아니
나는 스칼라에서 안드로이드에 대한 일반 어댑터를 구현하기 위해 노력하고 있습니다. 이 내 클래스입니다 :
class ScalaAdapter[A <: AnyRef](context: Context, resource: Int, objectsList: ArrayBuffer[A], adapterCb: AfAdapterItemCb) extends BaseAdapter with Filterable {...}
그리고 어댑터의 모든 사용자가 구현해야하는 특성은 다음과 같습니다
trait AfAdapterItemCb {
def itemCb[A](item: A, view: View) {}
}
내 모델 클래스는 다음과 같습니다
case class ScheduleItem(name: String, priority: Int)
내가 콜백 특성 구현하고 때, 나는 형식 매개 변수와 관련된 오류를 얻고있다 :
private class AdapterCbImpl extends AfAdapterItemCb {
override def itemCb[ScheduleItem](schedule: ScheduleItem, view: View) = {
view.findViewById(R.id.tv_name).asInstanceOf[TextView].setText(schedule.name)
view.findViewById(R.id.tv_priority).asInstanceOf[TextView].setText(schedule.priority.toString)
}
}
내가보기를 채우기 위해 일정 객체를 사용하려고하면, 나는 오류가 점점 오전 :
value name is not a member of type parameter ScheduleItem
value priority is not a member of type parameter ScheduleItem
나는 그것을 해결하기 위해 매니페스트를 이해할 수 없었다. 사람이 문제가 무엇인지 이해하고 있습니까?
해결법
-
==============================
1.트래비스 브라운 언급 한 바와 같이, 이것은 그림자라고하며, 매우 성가신 수 있습니다.
트래비스 브라운 언급 한 바와 같이, 이것은 그림자라고하며, 매우 성가신 수 있습니다.
override def itemCb[ScheduleItem](schedule: ScheduleItem, view: View) = {
ScheduleItem 여기이 경우 클래스 ScheduleItem에 아무것도 단지 T.처럼 형식 매개 변수의 이름입니다.
당신은 구체적인 유형을 사용하여 형식 매개 변수와 메소드를 오버라이드 (override) 할 수 없다.
나는 AfAdapterItemCb을 사용하는 방법을 알고하지 않습니다,하지만 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :
override def itemCb[T](item: T, view: View) = item match { case schedule: ScheduleItem => ... //your code case _ => ... // item is not a ScheduleItem }
from https://stackoverflow.com/questions/16489716/scala-type-parameter-error-not-a-member-of-type-parameter by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 카산드라 쿼리 감소 성능의 경고를주고, 준비된 문장을 여러 번 사용 (0) | 2019.11.18 |
---|---|
[SCALA] 어떻게 JSON 파일에 액세스 하위 기관에? (0) | 2019.11.18 |
[SCALA] 스파크 스칼라 앱에 대한 동일한 dataframe에서 날짜 컬럼에 일 칼럼의 번호 추가 (0) | 2019.11.18 |
[SCALA] 자바에서 scala.None 액세스 (0) | 2019.11.18 |
[SCALA] 불꽃의 모든 열 / 행 전체를 처리 UDF (0) | 2019.11.18 |