Android:为什么Realm类必须有getter方法?

时间:2017-05-03 05:44:21

标签: java android orm realm

请看下面一个非常简单的课程

public class tblProduct extends RealmObject
{
    @PrimaryKey
    public int ProdId;

    @Required
    public String Name;
}

现在,如果我这样做:

tblProduct prod = new tblProduct();
prod.ProdId = 1
prod.Name = "Test";

realm.beginTransaction();
tblProduct prodRealm = realm.copyToRealm(prod);
realm.commitTransaction();

您会看到 prodRealm.ProdId = 0 prodRealm.Name = null 。但是,如果添加getter和setter方法并调用getter方法,那么它将起作用(尽管直接访问变量仍然不起作用)。

public class tblProduct extends RealmObject
{
    @PrimaryKey
    public int ProdId;

    @Required
    public String Name;

    public int getProdId()
    {
        return ProdId;
    }

    public String getName()
    {
        return Name;
    }
}

然后是结果

System.out.println(prodRealm.Name);      //still returns NULL  <-- WRONG
System.out.println(prodRealm.getName()); //returns "Test"      <-- CORRECT

System.out.println(prodRealm.ProdId);      //still returns 0   <-- WRONG
System.out.println(prodRealm.getProdId()); //returns 1         <-- CORRECT

我的问题是,你为什么需要getter方法?为什么我不能直接访问变量?

我知道直接访问变量是不好的,但是对于数据库,我没有对变量做任何特殊操作。它只是从变量写入和读取。我不想使用setter / getter方法,因为我的数据库有相当多的表和字段,我想最小化方法的数量(我在某处读到它,在我必须使用之前,Android中的最大方法数是64K multidex支持库)。

感谢。

0 个答案:

没有答案