2012-01-19 2 views
1

저는 Java에 대한 초보자입니다. 문자열 필드가있는 객체 배열이 있습니다. 모든 문자열을 반복하여 문자열 배열로 연결할 수는 있지만 매우 우아하지 않습니다.Java 객체 배열의 필드를 연결합니다.

int numObj = obj.length; 
String[] strArray = new String[numObj]; 
for (int i = 0; i < numObj; i++) { 
    strArray[i] = obj[i].strField; 
} 

하나의 명령 문자열 배열로 모든 개체에서 해당 하나의 필드를 연결할 수있는 방법이 있습니까? 예컨대 :

String[] strArray = (String[]){obj[].strField}; 

obj[]가 배열이고 그래서 어떤 필드를 가지고 있지 않지만, obj라는 개체가 없기 때문에 {obj.strField}을 사용하면, 하나가 작동하지 않기 때문에이 작동하지 않습니다. BTW 나는 필드를 다시 채울 필요가 없으며 이미 문자열이기 때문에 .toString()을 수행해야합니다.

나는 많은 다른 많은 게시물을 보았지만 (충분하지 않을 수도 있겠는가?) 나는 이것에 대해 아직 이해할 수 없었다. 객체 배열을 문자열 배열로 변환하는 것과 관련된 내용이 있지만 객체의 특정 필드를 변환하는 것이 아니라 해당 객체 자체를 언 캐스트 유형으로 변환하는 것을 의미한다고 생각합니다.

MATLAB에서이 값은 아주 작습니다. 은 obj에있는 모든 strField에서 문자열의 셀 배열을 즉시 만듭니다.

도움 주셔서 감사합니다.

+2

미안하지만, 당신은 꽤 많은 것을해야합니다. 이것은 자바가 다른 언어들에 비해 조금 우아하지 않은 영역입니다. Java 8 또는 9 또는 10에서이 문제를 해결할 수 있습니다. :-) – user949300

답변

7

유일한 방법은 무엇입니까? 배열의 길이에 대한 변수를 만들 필요는 없습니다. 그리고 공개 필드를 사용하는 것은 99.99 %의 시간, 매우 나쁜 생각입니다.

String[] strings = new String[objects.length]; 
for (int i = 0; i < objects.length; i++) { 
    strings[i] = objects[i].getStringField(); 
} 
+0

+1 공개 필드를 불러옵니다. –

+0

필드를 비공개로 유지하는 데 대한 정보를 제공해 주셔서 감사합니다. –