Java - Inner Class Json parse(can only instantiate non-static inner class by using default no-argument constructor)
2019. 6. 13. 13:25ㆍ프로그래밍언어/Java&Servlet
RestTemplate으로 다른 API를 호출하고 특정 객체 타입으로 JSON을 parsing 하는 상황이었다. 그런데 해당 특정 객체는 내부적으로 Inner Class를 가지고 있는 상황이었는데, 아래와 같은 예외가 발생하였다.
예외:can only instantiate non-static inner class by using default no-argument constructor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
@Getter
@Setter
@ToString
public class Outer {
@Getter
@Setter
@ToString
@NoArgsConstructor
public class Inner1{
private String[] a;
private double[] b;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
public class Inner2{
private String[] a;
}
private long id;
private Inner1[] a;
private Inner2[] b;
private int status;
}
|
cs |
무슨 일 일까? 분명 매개변수 없는 생성자로 생성하였는데, 위와 같은 예외가 발생했다니... 원인은 바로 Inner Class가 static(정적)으로 선언되지 않는 한 단독(Outer 클래스를 참조하지 않고)으로 Inner Class의 디폴트 생성자를 호출해 인스턴스를 생성할 수 없는 것이다. 즉, 위와 같은 예외를 피하려면 Inner Class를 별도의 클래스로 생성하던가, 아니면 static Inner Class로 선언해주어야 한다.
'프로그래밍언어 > Java&Servlet' 카테고리의 다른 글
Java - JVM이란? JVM 메모리 구조 (1) | 2019.07.29 |
---|---|
Eclipse - Archive for required library 해결방법 (0) | 2019.06.18 |
Java - lambda(람다) 간단한 사용법 ! (0) | 2019.03.10 |
Java - Collections.rotate() 란? (0) | 2019.02.25 |
Java - ThreadLocal 이란? 쓰레드로컬 사용법! (0) | 2019.02.21 |