什么时候/为什么要在方法上使用Firebase @Exclude注释

时间:2018-08-09 19:36:54

标签: java android firebase firebase-realtime-database

here中,我知道我们应该使用此批注来将字段排除在Firebase上之外。我知道很多

但是从here中我们可以看到此注释已完成,因此也可以在方法上使用!正如在几个examples上看到的那样,但是为什么我应该@Exclude一个方法呢?如果我不@Exclude方法会怎样?由于保存的只是字段,所以我不知道何时/为什么要在方法上使用此批注。

编辑

正如你们所问的那样,这是一个示例,发布在上面的链接上,当在Firebase项目中时,firebase团队使用@Exclude的方法既不是getter也不是setter的方法

@Exclude
public Map<String, Object> toMap() {
    HashMap<String, Object> result = new HashMap<>();
    result.put("id", id);
    result.put("fullName",fullName);
    result.put("birthDate",birthDate);
    result.put("birthYear", birthYear);
    result.put("height",height);
    result.put("aboutMe",aboutMe);
    result.put("userLocation",userLocation);
    result.put("jobPosition",jobPosition);
    result.put("companyName",companyName);
    result.put("companyLocation",companyLocation);
    result.put("jobStartDate",jobStartDate);
    result.put("homeEmail",homeEmail);
    result.put("homePhone",homePhone);
    result.put("workEmail",workEmail);
    result.put("workPhone",workPhone);
    result.put("facebookName",facebookName);
    result.put("facebookLink",facebookLink);
    result.put("instaName",instaName);
    result.put("instaLink",instaLink);
    return result;
}

1 个答案:

答案 0 :(得分:3)

如果字段是公共字段,则在其上使用@Exclude,然后直接访问它们的值。例如:

public class Pojo {
    public String name;
    @Exclude
    public int age;
}

当基础字段是私有的并且所有访问都必须通过这些访问器时,请在getter和setter方法上使用@Exclude。例如:

public class Pojo {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    @Exclude
    public int getAge() {
        return age;
    }
}

Firebase SDK可以发现和使用两种。