Getter和Setters不工作?
我现在有两个class:RemindersDAO.java和ViewLocalReminders.java。
我正在尝试访问ViewLocalReminders.java中的变量,我试图从RemindersDAO.java中调用它。 我是通过使用getter / setter方法组合来做到这一点的。 但是,出于某种原因,我的变量值在getter方法中保持设置为0。 这是代码:
ViewLocalReminders.java
public class ViewLocalReminders extends SherlockListActivity { private long reminderID; public void onCreate(Bundle SavedInstance) { reminderID = 16; setReminderID(reminderID); } public void setReminderID(long id) { id = reminderID; System.out.println("Reminder ID Value in Setter: " + reminderID); } public long getReminderID() { return reminderID; System.out.println("Reminder ID Value in Getter: " + reminderID); } }
RemindersDAO.java
public class RemindersDAO extends SQLiteOpenHelper { @SuppressWarnings("deprecation") public Cursor getRowByID(Activity activity) { String[] from = { _ID, NAME }; ViewLocalReminders viewLocalReminders = new ViewLocalReminders(); long reminderID = viewLocalReminders.getReminderID(); System.out.println("Value of Reminder ID in RemindersDAO: " + reminderID); } }
这是我为所有System.out.printlns获取的输出:
- Setter中的提醒ID值:16
- Getter中的提醒ID值:0
- RemindersDAO中的提醒ID值:0
显然,在setter和getter方法之间发生了一些事情。 在setter方法中,reminderID的值是16,应该是这样。 但是,getter方法中的值为0。 因此,当我在RemindersDAO.java中调用getter方法时,该值仍为0。 我在这做错了什么? 谢谢你的帮助! 🙂
这里:
public void setReminderID(long id) { id = reminderID; //<-- wrong, should be the other way around System.out.println("Reminder ID Value in Setter: " + reminderID); }
您应该使用reminderID = id
也:
public void onCreate(Bundle SavedInstance) { reminderID = 16; //one of these two lines.. setReminderID(reminderID); //..should do it }
无需两次设置reminderId
你的二传手应该是这样的:
public void setReminderID(long id) { reminderID = id; System.out.println("Reminder ID Value in Setter: " + reminderID); }
您的remainderID
变量应该在左侧。 你写它的方式,id被设置为reminderID。
另外,在你的getter中:
public long getReminderID() { return reminderID; System.out.println("Reminder ID Value in Getter: " + reminderID); }
由于System.out.println
在返回之后,因此您不应该看到输出。 返回将在那里结束function。
你有
id = remainderID;
它应该是
remainderID = id;
您分配的提醒ID是向后的
id = reminderID;
应该读
reminderID = id;
在你的setReminderID
方法中
public void setReminderID(long id) { this.reminderID = id; System.out.println("Reminder ID Value in Setter: " + reminderID); }
尝试使用这个
this.remainderId = id;
代替
remainderId = id;
在您的模型或域中。
你的setter方法似乎错了。 您需要使用IDE的自动生成来创建这些方法。
我看到你接受了答案。 但是,我想我知道你的getter-setter bug的问题。 这是关于订单和订单的重要事项……就像你一步一步地给出指示。
让我解释…
第一个,你的setter方法,犯了一个错误。 (见标记评论/ s)
public void setReminderID(long id) { id = reminderID; // --> your argument is id. reminderId field value should be changed not the other way around. System.out.println("Reminder ID Value in Setter: " + reminderID); }
这是正确的二传手。
public void setReminderID(long id) { reminderID = id; // --> "id" is your parameter and that's the reminderID's new value. System.out.println("Reminder ID Value in Setter: " + reminderID); }
接下来,关于吸气剂。 getter中存在错误的原因是因为您的订单错误。 (见标记评论/ s)
public long getReminderID() { return reminderID; System.out.println("Reminder ID Value in Getter: " + reminderID); // --> putting this line code after "return" results an error and therefore you won't be able to obtain a number or value! }
这是正确的吸气剂。 仔细看看差异。
public long getReminderID() { System.out.println("Reminder ID Value in Getter: " + reminderID); // --> Anycode before "return" value will be fine. return reminderID; // --> Always put the "return" value at the last line within a getter method. }
我希望您可以在将来的项目中使用此更正,以防您在编程时需要应用getter-setter方法。 请记住,这非常重要,因为代码的排序很重要,并且知道您在哪里引导价值变化。 有问题吗?
谢谢你们的帮助。 虽然我遵循了你们所有人的建议,但我无法弄清楚为什么我的吸气剂和制定者不能正常工作。 我猜它与remderID作为构造函数的参数被接受的事实有关。 无论哪种方式,我通过使用Android的Bundle解决了我的问题,并通过它将我的变量从一个活动转移到另一个活动。
再次感谢您的帮助! 🙂