Java 创建新对象时使用集合方法的替代方法
因此,我试图创建一个程序,帮助我跟踪我的开支,我有一个问题,我如何创建我的对象 到目前为止,我一直在像这样创建我的对象:Java 创建新对象时使用集合方法的替代方法,java,oop,Java,Oop,因此,我试图创建一个程序,帮助我跟踪我的开支,我有一个问题,我如何创建我的对象 到目前为止,我一直在像这样创建我的对象: Grocery milk = new Grocery(); milk.setName("Milk"); milk.setCost(2.84); milk.setDate(30, 12, 2014); milk.setType("Food"); “我的杂货店”类别扩展了此费用类别: public Expense(){} public Expe
Grocery milk = new Grocery();
milk.setName("Milk");
milk.setCost(2.84);
milk.setDate(30, 12, 2014);
milk.setType("Food");
“我的杂货店”类别扩展了此费用类别:
public Expense(){}
public Expense(String name, Double cost, Calendar purchaseDate){
name = _name;
cost = _cost;
purchaseDate = _purchaseDate;
}
到目前为止,我的杂货店类只添加了另一个我称之为type的字符串参数,所以我的问题是:
与使用set方法为每个新创建的对象设置参数不同,我希望这样做:
Grocery milk = new Grocery("Milk", 2.84, ??Date??, "Food")
但是date参数比其他类型的string和double参数稍微复杂一些,有什么方法可以实现我想要的,或者使用set方法更好吗
提前感谢您的帮助。您只需使用类型为的
对象即可
替代方法包括使用对象(具有更灵活/更强大的日期操作方法),或仅将日期存储为字符串
至于决定是使用setX()
方法还是使用全面的构造函数,除非有理由不这样做,否则您可以同时使用这两种方法,并在任何时候使用最合适的方法
进一步阅读:
您可以简单地使用类型为的对象
替代方法包括使用对象(具有更灵活/更强大的日期操作方法),或仅将日期存储为字符串
至于决定是使用setX()
方法还是使用全面的构造函数,除非有理由不这样做,否则您可以同时使用这两种方法,并在任何时候使用最合适的方法
进一步阅读:
为什么不尝试将date
存储为字符串或a?这与您的问题无关,但对于这样的值类,我强烈建议将它们也设置为不可变的-将它们的所有字段标记为final
,并在构造函数中设置它们。这使得许多事情更容易进行推理,并且还可以捕捉到费用构造函数中的bug,在这里您根本不设置字段!(将方法参数设置为字段(默认)值,而不是相反的方式。)将日期作为基本值传递给构造函数,该构造函数接受基本值并将其视为历元秒。为什么不尝试将date
存储为字符串或字符串?这与您的问题无关,但是对于像这样的值类,我强烈建议将它们也设置为不可变的-将它们的所有字段标记为final
,并在构造函数中设置它们。这使得许多事情更容易进行推理,并且还可以捕捉到费用构造函数中的bug,在这里您根本不设置字段!(您将方法参数设置为字段(默认)值,而不是相反。)将日期作为基本值传递给构造函数,该构造函数接受基本值并将其视为历元秒。这个答案是正确的。但是请注意,与java捆绑在一起的java.util.Date和.Calendar类是出了名的麻烦。许多人转而使用java 8中内置的库或新的java.time包(受Joda time的启发)。看,这个答案是正确的。但是请注意,与java捆绑在一起的java.util.Date和.Calendar类是出了名的麻烦。许多人转而使用java 8中内置的库或新的java.time包(受Joda time的启发)。看见
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse("16/01/2015");
Grocery milk = new Grocery("Milk", 2.84, date, "Food")