This question already has answers here:
Does Java support default parameter values?
(22个答案)
3个月前关闭。
我正在努力使我的项目之一更加简化。我有一种方法,通过执行一堆if语句来检查函数的参数是否为空。我想知道是否有更优雅的解决方案,类似于python中的默认值?我在下面发布了当前代码。谢谢!
我研究了设置类似于python的默认值的方法,但可悲的是Java不支持它。
因此,您现在拥有的可能是最好的(不过,我也将其设为null安全)。
(22个答案)
3个月前关闭。
我正在努力使我的项目之一更加简化。我有一种方法,通过执行一堆if语句来检查函数的参数是否为空。我想知道是否有更优雅的解决方案,类似于python中的默认值?我在下面发布了当前代码。谢谢!
我研究了设置类似于python的默认值的方法,但可悲的是Java不支持它。
/**
* Updates a user defined address on the mySQL server
* @param conn The mySQL connection
* @param id The id of the address
* @param number The new house number
* @param name The new street name
* @param city The new city
* @param state The new state
* @param zip The new zip code
*/
public static void update(Connection conn, int id, String number, String name, String city, String state, String zip) {
Address address = Address.getBy(conn, "id", Integer.toString(id));
if(number.equals("")) {
number=address.getNumber();
}
if(name.equals("")) {
name=address.getName();
}
if(city.equals("")) {
city=address.getCity();
}
if(state.equals("")) {
state=address.getState();
}
if(zip.equals("")) {
zip=address.getZip();
}
try {
PreparedStatement ps = conn.prepareStatement("UPDATE address SET number=?, name=?, city=?, state=?, zip=? WHERE id =?");
ps.setString(1, number);
ps.setString(2, name);
ps.setString(3, city);
ps.setString(4, state);
ps.setString(5,zip);
ps.setInt(6, id);
ps.executeUpdate();
}catch (Exception e) {
e.printStackTrace();
}
}
最佳答案
Java没有默认参数值。
如果只需要一个或两个,则可以使用方法重载,但这不能扩展为大量参数的任意组合。
// optional parameters missing
void update(Connection c, int n){
Address a = ...
update(c, n, a.getNumber(), a.getName(), a.getCity(), a.getState())
}
// another version with all parameters given
void update(Connection c, int n,
String number, String name, String city, String state){
...
}
因此,您现在拥有的可能是最好的(不过,我也将其设为null安全)。