

拡張for文の箇所でClassCastExceptionが発生します。エラーが出ないようにStudentオブジェクトのIdをそれぞれコンソールに出力するにはどう修正したらよろしいでしょうか。お願いいたします。

[code]

    ■Testクラス
    @Controller    
    public class Test {
    
        @RequestMapping(value="/login", method=RequestMethod.GET)
        public String login(@RequestParam(value="name", required=false,defaultValue="World") String     name    ,Model model){
    
    
            RestTemplate restTemplate = new RestTemplate();
            @SuppressWarnings("unchecked")
            List<Student> aiu = restTemplate.getForObject("http://localhost:9292/student?userId=0000    2", List.class);
    
            for(Student a : aiu){
                System.out.println(a.getId());
    
            }
            return "login";
        }
    }
    
    ■Studentクラス
    public class Student {
        private String id;
        private String name;
        private String score;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getScore() {
            return score;
        }
        public void setScore(String score) {
            this.score = score;
        }
    }
    
    ■StudentControllerクラス
    @RestController
    public class StudentController {
    
        @RequestMapping(value = "/student", method=RequestMethod.GET)
    
        public List<Student> get(@RequestParam String userId) {
    
            List<Student> a = new ArrayList<Student>();
    
            Student aa = new Student();
            aa.setId("0001");
            aa.setName("安藤");
            aa.setScore("30");
    
            Student ab = new Student();
            ab.setId("0002");
            ab.setName("田中");
            ab.setScore("48");
    
            a.add(aa);
            a.add(ab);
    
            return a;
        }
    }
    
[/code]


CC BY-SA 3.0
2016-12-13T15:49:03.480
31126
2016-12-14T01:12:54.777
17348
question
spring-boot java8
拡張for文でClassCastExceptionが発生します。


下記のコードだと、Listの型指定はしていないので、  
要素はObjectになってしまい、ClassCastExceptionが発生するのだと思います。

[code]

    List<Student> aiu = restTemplate.getForObject("...", List.class);
    
[/code]

以下のように、Student型の配列で受け取るようにすれば、  
ClassCastExceptionは発生しなくなるかと思います。

[code]

    ResponseEntity<Student[]> responseEntity = 
        restTemplate.getForEntity(url, Student[].class);
    Student[] aiu = responseEntity.getBody();
    
[/code]


CC BY-SA 3.0
2016-12-14T01:12:54.777
31133
2016-12-14T01:12:54.777
10724
31126
answer