오류 : 호환되지 않는 유형 : 개체를 MyClass로 변환 할 수 없습니다.

Mojtaba

Parcelable을 구현하는 대신 @Parcel 주석을 사용하고 싶습니다.
그래서 내 수업은 다음과 같습니다.

@Parcel
public class UserSkillSpec {
    private final String TAG = getClass().getSimpleName();

    private Skill skill;
    private int endorses = 0;
    private boolean endorsed = false;
    private List<User> endorsers = new LinkedList<>();
    private int proficiency = 0;
    private boolean verified = false;

    @ParcelConstructor
    public UserSkillSpec(Skill skill, int proficiency) {
        this.skill = skill;
        this.proficiency = proficiency;
    }

}    

프로젝트를 빌드하고 싶을 때 MessageBox에이 오류가 나타납니다.

Error:(62, 109) error: incompatible types: Object cannot be converted to User    

사용자 소스 코드는 다음과 같습니다.

@Parcel
@RealmClass
public class User extends RealmObject {
    @PrimaryKey
    private String id;

    private String firstName;
    private String lastName;
    private String name;
   //and something else

    public User() {
    }
}    

분명히이 문제는 List와 관련이 있습니다.
내 문제를 어떻게 해결할 수 있습니까?
감사.

EDIT1 : 사용자 클래스를 아래 코드로 변경했습니다.

@Parcel(implementations = {UserRealmProxy.class},
        value = Parcel.Serialization.BEAN,
        analyze = {User.class})
@RealmClass
public class User implements RealmModel {
    @PrimaryKey
    private String id;

    private String firstName;
    private String lastName;
    private String name;
    //somethings else

    public User() {
    }
}

Parceler 라이브러리에 의해 자동 생성 된 UserSkillSpec $$ Parcelable 클래스 에서 오류가 발생했습니다.

public static void write(UserSkillSpec userSkillSpec$$1, android.os.Parcel parcel$$1, int flags$$0, IdentityCollection identityMap$$0) {
        int identity$$0 = identityMap$$0 .getKey(userSkillSpec$$1);
        if (identity$$0 != -1) {
            parcel$$1 .writeInt(identity$$0);
        } else {
            parcel$$1 .writeInt(identityMap$$0 .put(userSkillSpec$$1));
            Skill$$Parcelable.write(InjectionUtil.getField(Skill.class, UserSkillSpec.class, userSkillSpec$$1, "skill"), parcel$$1, flags$$0, identityMap$$0);
            parcel$$1 .writeInt(InjectionUtil.getField(int.class, UserSkillSpec.class, userSkillSpec$$1, "proficiency"));
            if (InjectionUtil.getField(List.class, UserSkillSpec.class, userSkillSpec$$1, "endorsers") == null) {
                parcel$$1 .writeInt(-1);
            } else {
                parcel$$1 .writeInt(InjectionUtil.getField(List.class, UserSkillSpec.class, userSkillSpec$$1, "endorsers").size());
                for (User user$$0 : InjectionUtil.getField(List.class, UserSkillSpec.class, userSkillSpec$$1, "endorsers")) {
                    User$$Parcelable.write(user$$0, parcel$$1, flags$$0, identityMap$$0);
                }
            }
            parcel$$1 .writeInt((InjectionUtil.getField(boolean.class, UserSkillSpec.class, userSkillSpec$$1, "verified")? 1 : 0));
            parcel$$1 .writeInt(InjectionUtil.getField(int.class, UserSkillSpec.class, userSkillSpec$$1, "endorses"));
            parcel$$1 .writeString(InjectionUtil.getField(String.class, UserSkillSpec.class, userSkillSpec$$1, "TAG"));
            parcel$$1 .writeInt((InjectionUtil.getField(boolean.class, UserSkillSpec.class, userSkillSpec$$1, "endorsed")? 1 : 0));
        }
    }
Mojtaba

마침내 문제를 해결하고 공유하기로 결정했습니다.
팁 : 1. 목록은 일반이어야합니다. List<Item>하지 List
2. 사용 @ParcelPropertyConverter(ItemListParcelConverter.class)의 선언List<Item>

그래서 내 코드는 다음과 같습니다.

@Parcel(implementations = {UserRealmProxy.class},
        value = Parcel.Serialization.BEAN,
        analyze = {User.class})
public class User extends RealmObject {
    @PrimaryKey
    private String id;

    private String firstName;
    private String lastName;
    private String name;}    

그리고 이것:

@Parcel
public class UserSkillSpec {
    private Skill skill;
    private int endorses = 0;
    private boolean endorsed = false;
    @ParcelPropertyConverter(ItemListParcelConverter.class)
    private List<User> endorsers = new LinkedList<>();
    private int proficiency = 0;
    private boolean verified = false;

    public UserSkillSpec() {
    }
}

그리고 이것은 parcelConvertor 클래스입니다.

public class ItemListParcelConverter<T> extends ArrayListParcelConverter<T> {
    @Override
    public void itemToParcel(T item, Parcel parcel) {
        parcel.writeParcelable(Parcels.wrap(item), 0);
    }

    @Override
    public T itemFromParcel(Parcel parcel) {
        return Parcels.unwrap(parcel.readParcelable(getClass().getClassLoader()));
    }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

오류 : (28, 58) 오류 : 호환되지 않는 유형 : 개체를 주소로 변환 할 수 없습니다.

분류에서Dev

오류 : 호환되지 않는 유형 : 개체를 char로 변환 할 수 없습니다.

분류에서Dev

오류 : 호환되지 않는 유형 : MainFragment를 활동으로 변환 할 수 없습니다

분류에서Dev

JAVAFX 오류 호환되지 않는 유형 : FXMLLoader를 노드로 변환 할 수 없습니다.

분류에서Dev

오류 : 호환되지 않는 유형 : NewsLoader를 Loader <List <News >>로 변환 할 수 없습니다.

분류에서Dev

호환되지 않는 유형 : 개체를 CoreLabel로 변환 할 수 없습니다.

분류에서Dev

호환되지 않는 유형 : FirebaseMessagingService를 Context로 변환 할 수 없습니다.

분류에서Dev

오류 : 호환되지 않는 유형 : 'Something'은 'Something'으로 변환 할 수 없습니다.

분류에서Dev

Java에서 '호환되지 않는 유형 : SomeObject를 CAP # 1로 변환 할 수 없음'오류 수정 방법

분류에서Dev

일반 반환 유형 사용 오류 (호환되지 않는 유형 : T로 변환 할 수 없음)

분류에서Dev

호환되지 않는 유형 : Java netbeans에서 객체를 문자열로 변환 할 수 없습니다.

분류에서Dev

호환되지 않는 유형 : BigInteger는 int로 변환 할 수 없습니다.

분류에서Dev

TypeScript : 호환되지 않는 매개 변수 유형으로 함수를 구현할 수 없습니다.

분류에서Dev

호환되지 않는 유형 : char []을 CharSequence로 변환 할 수 없습니다

분류에서Dev

TypeError : 오류 # 1034 : 유형 강제 변환 실패 : 개체를 배열로 변환 할 수 없습니다.

분류에서Dev

오류 "java.lang.String 유형의 개체를"유형으로 변환 할 수 없습니다. "

분류에서Dev

표준 오류 계산 오류 : (목록) 개체를 'double'유형으로 강제 변환 할 수 없습니다.

분류에서Dev

호환되지 않는 유형 객체는 t로 변환 할 수 없습니다. 여기서 t는 유형 변수입니다.

분류에서Dev

Java-컴파일 오류 가져 오기 호환되지 않는 유형 int는 [] []로 변환 할 수 없습니다.

분류에서Dev

응용 프로그램 setBackground의 () 오류 : 호환되지 않는 유형 : INT는 그리기로 변환 할 수 없습니다

분류에서Dev

함수 오류 수정 : 'pairlist'개체를 'double'유형으로 강제 변환 할 수 없습니다.

분류에서Dev

오류는 반환을 uiviewcontroller 유형으로 변환 할 수 없습니다.

분류에서Dev

오류는 개체를 테이블로 변환 할 수 없습니다.

분류에서Dev

포착되지 않은 오류 : Core 클래스의 개체를 문자열로 변환 할 수 없습니다.

분류에서Dev

FragmentActivity 전환 오류 ... "호환되지 않는 유형"또는 "FragmentTransaction을 적용 할 수 없습니다."

분류에서Dev

내가 RPG 게임의 일부를 코딩하고있어 없다는 오류있다 "호환되지 않는 유형 : 문자가 부울로 변환 할 수 없습니다"(자바, BlueJ의)

분류에서Dev

호환되지 않는 유형 : NewFeedAdapter.MyAdViewHolder는 NewFeedAdapter.ViewHolder로 변환 할 수 없습니다.

분류에서Dev

호환되지 않는 유형 : FragmentDark는 Android에서 Fragment로 변환 할 수 없습니다.

분류에서Dev

호환되지 않는 유형의 카드는 문자열로 변환 할 수 없습니다.

Related 관련 기사

  1. 1

    오류 : (28, 58) 오류 : 호환되지 않는 유형 : 개체를 주소로 변환 할 수 없습니다.

  2. 2

    오류 : 호환되지 않는 유형 : 개체를 char로 변환 할 수 없습니다.

  3. 3

    오류 : 호환되지 않는 유형 : MainFragment를 활동으로 변환 할 수 없습니다

  4. 4

    JAVAFX 오류 호환되지 않는 유형 : FXMLLoader를 노드로 변환 할 수 없습니다.

  5. 5

    오류 : 호환되지 않는 유형 : NewsLoader를 Loader <List <News >>로 변환 할 수 없습니다.

  6. 6

    호환되지 않는 유형 : 개체를 CoreLabel로 변환 할 수 없습니다.

  7. 7

    호환되지 않는 유형 : FirebaseMessagingService를 Context로 변환 할 수 없습니다.

  8. 8

    오류 : 호환되지 않는 유형 : 'Something'은 'Something'으로 변환 할 수 없습니다.

  9. 9

    Java에서 '호환되지 않는 유형 : SomeObject를 CAP # 1로 변환 할 수 없음'오류 수정 방법

  10. 10

    일반 반환 유형 사용 오류 (호환되지 않는 유형 : T로 변환 할 수 없음)

  11. 11

    호환되지 않는 유형 : Java netbeans에서 객체를 문자열로 변환 할 수 없습니다.

  12. 12

    호환되지 않는 유형 : BigInteger는 int로 변환 할 수 없습니다.

  13. 13

    TypeScript : 호환되지 않는 매개 변수 유형으로 함수를 구현할 수 없습니다.

  14. 14

    호환되지 않는 유형 : char []을 CharSequence로 변환 할 수 없습니다

  15. 15

    TypeError : 오류 # 1034 : 유형 강제 변환 실패 : 개체를 배열로 변환 할 수 없습니다.

  16. 16

    오류 "java.lang.String 유형의 개체를"유형으로 변환 할 수 없습니다. "

  17. 17

    표준 오류 계산 오류 : (목록) 개체를 'double'유형으로 강제 변환 할 수 없습니다.

  18. 18

    호환되지 않는 유형 객체는 t로 변환 할 수 없습니다. 여기서 t는 유형 변수입니다.

  19. 19

    Java-컴파일 오류 가져 오기 호환되지 않는 유형 int는 [] []로 변환 할 수 없습니다.

  20. 20

    응용 프로그램 setBackground의 () 오류 : 호환되지 않는 유형 : INT는 그리기로 변환 할 수 없습니다

  21. 21

    함수 오류 수정 : 'pairlist'개체를 'double'유형으로 강제 변환 할 수 없습니다.

  22. 22

    오류는 반환을 uiviewcontroller 유형으로 변환 할 수 없습니다.

  23. 23

    오류는 개체를 테이블로 변환 할 수 없습니다.

  24. 24

    포착되지 않은 오류 : Core 클래스의 개체를 문자열로 변환 할 수 없습니다.

  25. 25

    FragmentActivity 전환 오류 ... "호환되지 않는 유형"또는 "FragmentTransaction을 적용 할 수 없습니다."

  26. 26

    내가 RPG 게임의 일부를 코딩하고있어 없다는 오류있다 "호환되지 않는 유형 : 문자가 부울로 변환 할 수 없습니다"(자바, BlueJ의)

  27. 27

    호환되지 않는 유형 : NewFeedAdapter.MyAdViewHolder는 NewFeedAdapter.ViewHolder로 변환 할 수 없습니다.

  28. 28

    호환되지 않는 유형 : FragmentDark는 Android에서 Fragment로 변환 할 수 없습니다.

  29. 29

    호환되지 않는 유형의 카드는 문자열로 변환 할 수 없습니다.

뜨겁다태그

보관