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获取的输出:

  1. Setter中的提醒ID值:16
  2. Getter中的提醒ID值:0
  3. 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解决了我的问题,并通过它将我的变量从一个活动转移到另一个活动。

再次感谢您的帮助! 🙂