Java 仅使用指定的变量创建对象

Java 仅使用指定的变量创建对象,java,object,Java,Object,我有一个如下所示的java类。所以我想用较少的变量来创建这个类的对象 public class ABC{ private String firstName; private String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public Str

我有一个如下所示的java类。所以我想用较少的变量来创建这个类的对象

public class ABC{
private String firstName;
private String lastName;
public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}
}

所以我想制作一个只包含firstName的对象。我能做到这一点吗??或者有没有办法创建具有相同或不同数量变量的对象。

您可以在这里使用继承,如:

public class Base {
  private final String lastName;

  public Base(String lastName) { this.lastName = lastName; }
  public String getLastName() {
    return lastName;
  }
}

public class Child extends Base {
  private String firstName;

  public Child(String lastName, String firstName) { 
    super(lastName);
    this.firstName = firstName; 
  }
  public String getFirstName() {
    return firstName;
  }
}
现在,基类只有一个字段,子类添加另一个字段


根据OP的评论:这里直截了当的答案是——使用a。您可以将excel文件中的“字段名”用作地图中的键,并将excel字段值用作地图值。Java中不能有动态地具有“实”字段的类。类的结构是固定的——所有字段在编译时都是已知的。因此,除非您想创建一个知道所有可能字段的类,否则最好使用map。

我认为这是不可能的。您可以扩展类ABC并重写getLastname()


阅读您的评论后,我认为您应该为dataobject创建一个包含所有必需字段的类,如果excel文件中有值,则设置该值,如果没有,则该字段的值为空。

只需使用此值,因为您没有构造函数,没有什么比糟糕的抽象更能迫使您提供lastnameSounds的了。@Stultuske这不起作用,因为我试图存储excel数据,有时我会得到字段firstname和lastname,有时会超过2个字段。因此,我需要根据FieldsHanks创建对象。但这不起作用,因为我试图存储excel数据,有时会获取字段firstname和lastname,有时会超过2个字段。因此,我需要根据字段设置对象。我无法覆盖,因为我不知道哪些字段仅在导入excel文件期间提交。您可以创建一个类,该类包含诸如Object getFieldvalue(String fieldname)和setFieldvalue(String fieldname,Object value)之类的方法。然后将这些值存储在某种映射中。