programing

이게 뭐야? [Ljava.lang]오브젝트;

kingscode 2022. 10. 9. 11:29
반응형

이게 뭐야? [Ljava.lang]오브젝트;

내가 전화했을 때 이걸 받았어toString함수 호출에서 받은 객체에 대해 설명합니다.이 문자열에 인코딩된 개체 유형은 알지만 읽는 방법은 모릅니다.

이런 종류의 부호화란 무엇입니까?

[Ljava.lang.Object;의 이름입니다.Object[].class, 의 배열 클래스를 나타냅니다.Object.

명명방식은 에 기재되어 있습니다.

이 클래스 객체가 배열 유형이 아닌 참조 유형을 나타내는 경우 Java Language Specification(「13.1」)에서 지정된 대로 클래스의 바이너리 이름이 반환됩니다.

이 클래스 개체가 원시 유형을 나타내는 경우 또는void반환되는 이름은 기본 유형에 대응하는 Java 언어 키워드입니다.void.

이 클래스 객체가 배열 클래스를 나타내는 경우 이름의 내부 형식은 하나 이상의 요소 유형 이름 앞에 표시됩니다.'['어레이 네스트의 깊이를 나타내는 문자.요소 유형 이름의 인코딩은 다음과 같습니다.

Element Type        Encoding
boolean             Z
byte                B
char                C
double              D
float               F
int                 I
long                J
short               S 
class or interface  Lclassname;

당신의 것이 그 리스트의 마지막입니다.다음은 몇 가지 예입니다.

// xxxxx varies
System.out.println(new int[0][0][7]); // [[[I@xxxxx
System.out.println(new String[4][2]); // [[Ljava.lang.String;@xxxxx
System.out.println(new boolean[256]); // [Z@xxxxx

그 이유는toString()배열에 대한 메서드 반환String이 포맷은 어레이가 다음 명령을 실행하지 않기 때문입니다.@Override계승된 방법Object는 다음과 같이 지정됩니다.

class 메서드는 객체가 인스턴스인 클래스의 이름, at-sign 문자 "@" 및 객체의 해시 코드의 부호 없는 16진수 표현으로 구성된 문자열을 반환합니다.즉, 이 메서드는 다음 값과 동일한 문자열을 반환합니다.

getClass().getName() + '@' + Integer.toHexString(hashCode())

주의: 다음 항목에 의존할 수 없습니다.toString()임의의 오브젝트가 상기의 사양을 따르는 것은 그들이 할 수 있기 때문이다(통상 할 수 있기 때문이다).@Override다른 걸 돌려주기 위해서요임의의 오브젝트의 타입을 검사하는 보다 신뢰성 높은 방법은 오브젝트에서 호출하는 것입니다(a).final계승된 방법Object그리고 나서 반환된 내용을 반영합니다.Class물건.단, API는 리플렉션이 필요하지 않도록 설계되어야 합니다(Effective Java 2nd Edition, Item 53: Reflection보다 인터페이스 선호 참조).


보다 「유용한」으로toString어레이용

java.util.Arrays 제공하다toString기본 어레이의 과부하 및Object[]다 . . .라는 것도 있어요.deepToString이치노

다음은 몇 가지 예입니다.

int[] nums = { 1, 2, 3 };

System.out.println(nums);
// [I@xxxxx

System.out.println(Arrays.toString(nums));
// [1, 2, 3]

int[][] table = {
        { 1, },
        { 2, 3, },
        { 4, 5, 6, },
};

System.out.println(Arrays.toString(table));
// [[I@xxxxx, [I@yyyyy, [I@zzzzz]

System.out.println(Arrays.deepToString(table));
// [[1], [2, 3], [4, 5, 6]]

, 또다있 there라는 것도 .Arrays.equals ★★★★★★★★★★★★★★★★★」Arrays.deepEquals어레이와 관련된 다른 많은 유틸리티 방법 중 요소별로 어레이 균등성을 비교합니다.

관련 질문

Liquibase 오류로 인해 다음과 같은 메시지가 표시될 경우:

Caused By: Precondition Error
...
Can't detect type of array [Ljava.lang.Short

사용하고 있습니다.

not {
  indexExists()
}

프리컨디션이 여러 번 반복되면 오래된 버그가 발생합니다.https://liquibase.jira.com/browse/CORE-1342

할 수 있습니다.sqlCheck (후기):

SELECT COUNT(i.relname)
FROM
    pg_class t,
    pg_class i,
    pg_index ix
WHERE
    t.oid = ix.indrelid
    and i.oid = ix.indexrelid
    and t.relkind = 'r'
    and t.relname = 'tableName'
    and i.relname = 'indexName';

서 ''는tableName는 색인 입니다. - 은 색인 테이블 이름입니다.indexName는입니다. - 는 색인 이름입니다.

언급URL : https://stackoverflow.com/questions/3442090/what-is-this-ljava-lang-object

반응형