具有动态参数数量的泛型类

yar*_*rek 2 java

我正在寻找一种方法来获得具有动态数量属性的泛型类.

示例:(类用户)

User user1 = new User(1,"john","115 street","male",60,150, 15.125);
User user2 = new User(2,"john2","116 street","male",60,150, 15.125,"New york");
Run Code Online (Sandbox Code Playgroud)

等等..

这可以用Java完成,或者你能推荐我任何可能的替代方案(如果没有)?

mis*_*off 7

不幸的是,Java 不支持动态属性。

你可以破解它:

  1. 可变参数方法。使用以下签名method(Object... objects)。在这种情况下,您会将参数的对象数组传递给方法 - 只需根据需要处理它们。

  2. 地图结构。我认为这是更好的解决方案,你在你的班级中有带参数的地图。键在哪里 - 您的参数名称和值其实际值。

    class User {    
    
    Map<String, Object> properties;
    
          Object getParameter(String key){
            return properties.get(key);
          }
          void addParameter(String key, Object value){
            properties.put(key, value);
          }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

使用方法addParameter向对象添加新参数。

使用方法getParameter提取需要的值(例如getParameter("name");)


KAR*_*ván 6

您可以使用Java 创建varargs构造函数.在你的情况下,它看起来像这样:

public class User {
  private final long id;
  private final String name;
  private final Object[] parameters;

  public User(long id, String name, Object... parameters) {
    this.id = id;
    this.name = name;
    this.parameters = parameters;
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然我认为这不是一个好的模式,我建议你提出一个更好的想法,例如Map<String, Object>包含可选参数,或类似的东西.