declares multiple JSON fields named 변수이름
-> vo 에 똑같은 이름의 변수가 중복되어 있다는 오류.
두 눈 씻고봐도 VO에 중복된 변수를 선언한적 없다?
그러면 확인해야 할 부분은 *extends 한 부분.
* extends란?
자바(JAVA)의 상속(extends)
참조링크 : https://commin.tistory.com/101
- 부모 클래스(parent class) 와 자식 클래스(children class)는 자바 지정예약어 extends에 의하여 정해집니다.
- 하나의 부모 클래스(parent class)는 여러개의 자식 클래스(children)을 가질 수 있습니다.
- 반대로 하나의 클래스는 여러개의 클래스로부터 상속을 받을수는 없습니다.
- 부모 클래스(parent class)로부터 상속받은 자식 클래스는 부모 클래스의 자원(source) 모두를 사용 할 수 있습니다.
- 반대로 부모클래스는 자식클래스의 자원을 가져다 쓸 수는 없습니다.
- 자식클래스는 또다른 클래스의 부모 클래스가 될 수 있습니다.
- 자식클래스는 부모클래스로부터 물려받은 자원을 override 하여 수정해서 사용 할 수 있습니다.
- 부모클래스가 상속받은 자원도 자식클래스가 사용 가능합니다.
해설
소스에서 공통으로 사용될 변수( ex : year) 를 모아둔 BaseKeyVO 같은 Class를 만들었다.
(부모 클래스를 만들어 extends하지 않았다면 그냥 오류가 난 파일에 중복된 변수가 없는지 체크해 보면 문제해결. )
그리고, 그 VO를 extends한 순간 해당 클래스에 있는 변수를 모두 사용하겠다는것과 동일한 의미이며, 자식 클래스에서 따로 선언하지 않아도 사용할 수 있게 된다. ( 이것이 자바의 상속 )
즉 오류의 원인은, 해당 클래스를 상속해서 사용하겠다! 해놓고는 이미 부모클래스에서 선언된 year 변수를 또 다 시
선언했기 때문에 " declares multiple JSON fields named year " 오류가 발생한것이다.
상속한 부분을 보지 못하고 작업해서 오류났음.
public class testVO extends BaseKeyVO {
// 이미 부모클래스에 선언되어 있는걸 왜 또 선언하니ㅠ.ㅠ
private String year ;
public String getCopyYear() {
return copyYear;
}
public void setCopyYear(String copyYear) {
this.copyYear = copyYear;
}
}
'BackEnd > JAVA' 카테고리의 다른 글
JDBC와 Mybatis의 차이 / API (0) | 2021.10.05 |
---|---|
[JAVA] Split() 함수로 문자열 자르기 (0) | 2021.07.02 |
[JAVA] super키워드/this 키워드 / super() (0) | 2020.12.15 |
[JAVA] Json과 Gson (0) | 2020.11.17 |
[JAVA] JSTL이란? JSTL의 if문 / if ~ else 문 (0) | 2020.09.25 |