代码:

package test;

class Member{
	private String mid;
	private String name;
	private Role roles[];
	
	public Member() {}
	public Member(String mid, String name)
	{
		this.mid = mid;
		this.name = name;
	}
	// 省略普通属性的setter getter
	
	public void setRoles(Role roles[]){
		this.roles = roles;
	}
	public Role[] getRoles(){
		return this.roles;
	}
	
	public String getInfo()
	{
		return "【用户信息】 mid = " + this.mid + "、name = " + this.name;
	}
}
class Role{
	private long rid;
	private String title;
	private Member members[];
	private Privilege privileges[];
	
	public Role() {}
	public Role(long rid, String title)
	{
		this.rid = rid;
		this.title = title;
	}
	// 省略普通属性的setter getter
	public void setMembers(Member members[]){
		this.members = members;
	}
	public Member[] getMembers() {
		return this.members;
	}
	public void setPrivileges(Privilege privileges[]){
		this.privileges = privileges;
	}
	public Privilege[] getPrivileges() {
		return this.privileges;
	}
	
	public String getInfo()
	{
		return "【角色信息】 rid = " + this.rid + "、title = " + this.title;
	}
}
class Privilege{
	private long pid;
	private String title;
	private Role role;
	
	public Privilege() {}
	public Privilege(long pid, String title)
	{
		this.pid = pid;
		this.title = title;
	}
	// 省略普通属性的setter getter
	public void setRole(Role role) {
		this.role = role;
	}
	public Role getRole() {
		return this.role;
	}
	public String getInfo()
	{
		return "【权限信息】 pid = " + this.pid + "、title = " + this.title;
	}
}

public class Company{
	
	public static void main(String args[]){
		
		System.out.println("Hello");
		
		Member mem1 = new Member("mldn-1", "zhangsan");
		Member mem2 = new Member("mldn-2", "lisi");
		
		Role role1 = new Role(1L, "系统配置");
		Role role2 = new Role(2L, "备份管理");
		Role role3 = new Role(3L, "人事管理");
		
		Privilege pri1 = new Privilege(1000L, "系统初始化");
		Privilege pri2 = new Privilege(1001L, "系统还原");
		Privilege pri3 = new Privilege(1002L, "系统环境修改");
		Privilege pri4 = new Privilege(2000L, "备份员工数据");
		Privilege pri5 = new Privilege(2001L, "备份部门数据");
		Privilege pri6 = new Privilege(2002L, "备份公文数据");
		Privilege pri7 = new Privilege(3000L, "增加员工");
		Privilege pri8 = new Privilege(3001L, "编辑员工");
		Privilege pri9 = new Privilege(3002L, "浏览员工");
		Privilege pri10 = new Privilege(3003L, "员工离职");
		// 增加角色与权限的对应关系
		role1.setPrivileges(new Privilege[] {pri1, pri2, pri3});
		role2.setPrivileges(new Privilege[] {pri4, pri5, pri6});
		role3.setPrivileges(new Privilege[] {pri7, pri8, pri9, pri10});
		// 增加权限与角色的对应
		pri1.setRole(role1);
		pri2.setRole(role1);
		pri3.setRole(role1);
		pri4.setRole(role2);
		pri5.setRole(role2);
		pri6.setRole(role2);
		pri7.setRole(role3);
		pri8.setRole(role3);
		pri9.setRole(role3);
		pri10.setRole(role3);
		// 增加用户与角色的对应关系
		mem1.setRoles(new Role[] {role1, role2});
		mem2.setRoles(new Role[] {role1, role2, role3});
		role1.setMembers(new Member[] {mem1, mem2});
		role2.setMembers(new Member[] {mem1, mem2});
		role3.setMembers(new Member[] {mem2});
		
		// 根据要求获取数据
		System.out.println("------通过用户查找信息------");
		System.out.println(mem2.getInfo());
//		for(Role r : mem2.getRoles()) {
//			System.out.println("\t" + r.getInfo());
//			for(int i = 0; i < r.getPrivileges().length; i++) {
//				System.out.println("\t\t" + r.getPrivileges()[i].getInfo());
//			}
//		}
		for(int i = 0; i < mem2.getRoles().length; i++)
		{
			System.out.println("\t" + mem2.getRoles()[i].getInfo());
			for(int j = 0; j < mem2.getRoles()[i].getPrivileges().length; j++)
			{
				System.out.println("\t\t" + mem2.getRoles()[i].getPrivileges()[j].getInfo());
			}
		}
		System.out.println("------通过角色查找信息------");
		System.out.println(role2.getInfo());
		for(Privilege p : role2.getPrivileges()){
			System.out.println("\t" + p.getInfo());
		}
		for(Member m : role2.getMembers()) {
			System.out.println("\t" + m.getInfo());
		}
		
		System.out.println("------通过权限查找信息------");
		System.out.println(pri1.getInfo());
		System.out.println("\t" + pri1.getRole().getInfo());
		for(int i=0; i < pri1.getRole().getMembers().length; i++)
		{
			System.out.println("\t\t" + pri1.getRole().getMembers()[i].getInfo());
		}
		
		
	}
}