Java中类似于python的默认值

问题描述 投票:0回答:1

我正在努力使我的项目之一更加简化。我有一种方法,通过执行一堆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 python mysql
1个回答
0
投票

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安全)。

© www.soinside.com 2019 - 2024. All rights reserved.