java内部私有类中的getter setter

java内部私有类中的getter setter,java,getter-setter,Java,Getter Setter,我想在java中创建对应于下面json的bean { "name": "", "id": "", "dept": { "deptId": "", "deptName": "", "course": { "courseId": "", } } } 我的想法是创建父类,并将dept和course保留为内部私有类,然后使用getters setter获取或设置数据并形成父bean。

我想在java中创建对应于下面json的bean

{
    "name": "",
    "id": "",
    "dept": {
        "deptId": "",
        "deptName": "",
        "course": {
            "courseId": "",
        }
    }
}
我的想法是创建父类,并将
dept
course
保留为内部私有类,然后使用getters setter获取或设置数据并形成父bean。但我得到的错误是“改变公众的可见性”


如何访问内部私有类的私有字段以获取和设置数据?

您不能访问私有字段。为什么不为内部类私有字段创建一个getter和setter呢


<>和,也许你应该考虑使用库。

试试这个方法,它将工作

public class firstClass{

    private String name;
    private String id;
    Department dept;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public Department getDept() {
        return dept;
    }
    public void setDept(Department dept) {
        this.dept = dept;
    }


}

class Department{
    private int departId;
    private String deptName;
    Course course;
    public int getDepartId() {
        return departId;
    }
    public void setDepartId(int departId) {
        this.departId = departId;
    }
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    public Course getCourse() {
        return course;
    }
    public void setCourse(Course course) {
        this.course = course;
    }

}


class Course{
    private int courseId;

    public int getCourseId() {
        return courseId;
    }

    public void setCourseId(int courseId) {
        this.courseId = courseId;
    }

}

您至少必须使用私有(静态)嵌套私有类DeptImpl和SourceImpl创建嵌套的公共接口,比如Dept和Course

public class X {
    public interface Dept { ... }
    private static class DeptImpl extends Dept { ... }
    public Dept getDept() { ... }

    public Dept createDept(...) {
        DeptImpl dept = new DeptImpl(...); ...
        return dept;
    }
也许你需要提供一个工厂方法createDept


在某些情况下,实现类可以是匿名的
new Dept(){…}

您可以对不可变对象使用生成器设计模式:

public class Class {

private final String name;
private final int id;
private final Department dept;

private Class(ClassBuilder classBuilder){
    this.name = classBuilder.getName();
    this.id = classBuilder.getId();
    this.dept = classBuilder.getDept();
}

public String getName() {
    return name;
}

public int getId() {
    return id;
}

public Department getDept() {
    return dept;
}

private static class Department{

    private final int deptId;
    private final String deptName;
    private final Course course;

    private Department(DepartmentBuilder departmentBuilder){
        this.deptId = departmentBuilder.getDeptId();
        this.deptName = departmentBuilder.getDeptName();
        this.course = departmentBuilder.getCourse();
    }

    public int getDeptId() {
        return deptId;
    }

    public String getDeptName() {
        return deptName;
    }

    public Course getCourse() {
        return course;
    }

    private static class Course{

        private final int courseId;

        private Course(CourseBuilder courseBuilder){
            this.courseId = courseBuilder.getCourseId();
        }

        public int getCourseId() {
            return courseId;
        }
    }
}

public static class ClassBuilder{

    private final String name;
    private final int id;
    private final Department dept;

    public ClassBuilder(String name, int id, Department dept){
        this.name = name;
        this.id = id;
        this.dept = dept;
    }

    public Department getDept() {
        return dept;
    }

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

    public Class build(){
        return new Class(this);
    }
}

public static class DepartmentBuilder {

    private final int deptId;
    private final String deptName;
    private final Department.Course course;

    public DepartmentBuilder(int deptId, String deptName, Department.Course course ){
        this.deptId = deptId;
        this.deptName = deptName;
        this.course = course;
    }

    public int getDeptId() {
        return deptId;
    }

    public String getDeptName() {
        return deptName;
    }

    public Department.Course getCourse() {
        return course;
    }

    public Department build(){
        return new Department(this);
    }
}

public static class CourseBuilder{

    private final int courseId ;

    public CourseBuilder(int courseId){
        this.courseId = courseId;
    }

    public int getCourseId() {
        return courseId;
    }

    public Department.Course build(){
        return new Department.Course(this);
    }
}
}


}

您的代码是什么?您的Java代码是什么?
public class Sample {

public static void main(String ... strings){

    Class clazz = new Class.ClassBuilder("ClassName", 1, new Class.DepartmentBuilder(1, "departmentName", new Class.CourseBuilder(2).build()).build()).build();

    System.out.println(clazz.getDept());
}