2017-01-14 7 views
0

내가 클래스 B는캐스트 개체 [다른 형식으로

그래서 내가 좋아하는 뭔가를 A.에서 5 (10)의 특성을 필요로 클래스 A와 클래스 B를 가지고

A[] objArray = populateResponse();

그리고 B로 캐스팅, 나는 사람이 있기 때문에

for (A : objArray){ // getters here and push it to B obj array manually }

다른 제안 같은 것이 더 나은 방법으로 그것을 할 할 y 필드와 배열 크기가 커질 수 있습니까?

미리 감사드립니다.

+1

A의 속성 수는 부적합합니다. 10 개의 필드가있는 오브젝트에서 5 개의 필드를 복사하는 것은 50 개의 필드가있는 오브젝트에서 5 개의 필드를 복사하는 것과 같은 시간이 걸립니다. 배열의 길이 또한 무의미합니다. 복사를해야하는 경우, 복사하는 방식에 관계없이 수행해야합니다. 나는 존재하지 않는 문제에 대한 해결책을 찾고 있다고 생각합니다. –

+1

또한 이것은 캐스트와는 아무런 관련이 없습니다. –

+0

@JB 감사합니다. 뭔가 할 수 있는지 여부를 알고 싶어했다. –

답변

1

B가 A를 확장하거나 구현하면 그냥 버려집니다.

그렇지 않으면 - 그렇게 할 수 없습니다. ClassCastException이 표시됩니다.

두 클래스가 관련이 없지만 여전히 그렇게하고 싶다면 관련이 있어야합니다. 인터페이스를 작성하여 인터페이스에 대한 참조를 구현하고 전달합니다. 하지만 여전히 A에서 B로 캐스트 할 수는 없습니다. 당신이 너무 많은 경우에 대해 걱정하는 경우

, 당신은 그들은의 인스턴스를 취하고 그것에서 B의 인스턴스를 생성하는 함수를 작성 B에을 변환하고 A 인스턴스를 잃을 수 있습니다.

+0

그건 잘 잡았다. 인터페이스로 시도해 보았고 예외가 발생했습니다. B에서 A를 확장하는 것에 대한 당신의 의견을 좀 더 자세히 설명해 주시겠습니까? –

+0

인터페이스가있는 A에서 B로 대소 문자를 구분할 수 없으므로 더 이해가된다면 인터페이스를 사용할 것을 제안했습니다. – zmbq