为什么lists.add(examstudent)这行代码的lists始终为空

为啥会出现Null pointer access: The variable lists can only be null at this location错误

    String sql = "select flow_id, type, id_card, exam_card, student_name, location, grade from examstudent";

    PreparedStatement ps = null;
    ResultSet rs = null;
    List<ExamStudent> lists = null;


    try {
        ps = connection.prepareStatement(sql);
        rs = ps.executeQuery();


        while(rs.next()) {
            ExamStudent examstudent = new ExamStudent();

            int i = 1;

            examstudent.setFlow_id(rs.getInt(i++));
            examstudent.setType(rs.getInt(i++));
            examstudent.setId_card(rs.getString(i++));
            examstudent.setExam_card(rs.getString(i++));
            examstudent.setStudent_name(rs.getString(i++));
            examstudent.setLocation(rs.getString(i++));
            examstudent.setGrade(rs.getFloat(i++));

            lists.add(examstudent);  //Null pointer access: The variable lists can only be null at this location

        }

    } catch (SQLException e) {
        e.printStackTrace();
    }

    System.out.println(lists.size());
    return  lists;

List lists = new ArrayList();
List只是接口, 需要初始化成他的子类

 List<ExamStudent> lists = null;
->
List<ExamStudent> lists = new List<ExamStudent>();

List不new下,null能有add方法吗?

List不new下,null能有add方法吗?