请看下面一个非常简单的课程
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支持库)。
感谢。