안드로이드 개발

java.lang.ClassCastException: androidx.emoji2.text.SpannableBuilder cannot be cast to java.lang.String

피커 2023. 5. 11. 21:42
728x90
반응형

안드로이드 문자열 값을 다루다 보면 가끔 마주치는 에러입니다.

예를들면 char 형태의 값에 string Casting 할 때 발생하곤 합니다.

아래 예제를 보면서 해결 책을 공유드립니다.

 

1. 오류 로그

   -. 문제 발생시 아래처럼 SpannableBuilder cannot be cast to java.lang.String 이라는 문구가 발생합니다.

 

2. 예제 코드 (오류 포함)

  -. 아래 파란색으로 마킹된 부분에서 에러가 발생합니다.

     CharSequence 타입인 s를 string으로 casting 하기 때문입니다.

     실제로 이 문제를 해결하는 방법은 아주 간단합니다.

 

3. 해결 방법

   -. 이 해결 방법은 꼼수(?)가 아니라 정식 해결 방법입니다.

     보기엔 조금 이상해보이지만, 실제 코드를 따라가보면 아주 정상적이랍니다.

     기존 (string) 캐스팅을 지우고 그자리에 "" + 를 넣었습니다.

     Code 를 따라가보면 ""로 인해 컴파일러는 이 다음에 오는 문자열이 string으로 자동 캐스팅을 합니다.

 

4. 관련 백서

Thrown to indicate that the code has attempted to cast an object to a subclass of which it is not an instance. For example, the following code generates a ClassCastException:

 
     Object x = new Integer(0);
     System.out.println((String)x);
 

Summary

Public constructors
ClassCastException()Constructs a ClassCastException with no detail message.
ClassCastException(String s)Constructs a ClassCastException with the specified detail message.
Inherited methods
From class java.lang.Throwable
From class java.lang.Object

Public constructors

ClassCastException

Added in API level 1
 
public ClassCastException ()

Constructs a ClassCastException with no detail message.

ClassCastException

Added in API level 1
 
public ClassCastException (String s)

Constructs a ClassCastException with the specified detail message.

Parameters
s String: the detail message.
반응형