如何设置 class 数组变量的值?
How to set values for class array variable?
我正在为 API 设置值,我需要为 class 数据类型变量设置值,它是一个数组,我需要知道如何设置值?
我在 java 中尝试过,但我一直遇到编译时错误
Items equipmenxxts = new Items ();
equipmenxxts.setDKU(savedRequest.DKUType());
equipmenxxts.setQuantity(savedRequest.getQuantity());
item.setEquipments(equipmenxxts);
**//error setEquipments(Items[]) in ItemOrder cannot be applied to (Items)**
api class 设置值
public class ItemOrder implements java.io.Serializable {
private java.lang.String company,
private Items[] equipments; // class given below
public ItemOrder() {
}
public ItemOrder(Items[] equipments) {
this.equipments = equipments;
}
public java.lang.String getCompany() {
return company;
}
public void setCompany(java.lang.String company) {
this.company = company;
}
public Items[] getEquipments() {
return equipments;
}
public void setEquipments(Items[] equipments) {
this.equipments = equipments;
}
}
上面使用的这个class的数据类型
public class Items implements java.io.Serializable {
private java.lang.String DKU;
private int quantity;
public Items() {
}
public Items(String DKU, int quantity) {
this.DKU = DKU;
this.quantity = quantity;
}
}
api class设置值
@Service("clApiService")
public class NewApiImpl implements NewApiService {
@Override
public Request completeapiNewOrderRep(ServletWebRequest webRequest) {
try {
ItemOrder item = new ItemOrder();
item.setCompany(req.getCompany());
item.setEquipments(); //error setEquipments(Items[]) in ItemOrder cannot be applied to ()**
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
我希望将(req.setDKU 和数量)的值设置为 item.setEquipments( );
根据我的研究,为数组制作 set
有点设计错误。但是,您可以制作一个 void setItems(Items i)
,在参数上引入一个 ItemOrder
的特定索引,或者您可以制作一个 "superset",这不是一个真实的集合:
public void superSet(ItemOrder io){
this.equipments=io.setEquipments(Items[] i);
}
.setEquipments(Items[]) 需要一组项目,但您只传递了一个项目。
首先尝试创建一个包含您的项目的数组:
item.setEquipments(new Items[] {equipmenxxts});
或者,您可以将 equipmentxxts 创建为数组:
final Items[] equipmenxxts = new Items[1];
equipmenxxts[0].setDKU(savedRequest.DKUType());
equipmenxxts[0].setQuantity(savedRequest.getQuantity());
item.setEquipments(equipmenxxts);
此外,以这种方式设置多个项目时,请确保不要暴露您的 class' 内部状态,除非您 真的 知道自己在做什么——为什么!您可以考虑为您的方法使用可变数量的参数:
public Items[] getEquipments() {
return Arrays.copyOf(equipments, equipments.length);
}
public void setEquipments(Items... equipments) {
this.equipments = Arrays.copyOf(equipments, equipments.length);
}
现在您可以使用数组作为参数调用 .setEquipments(...),或者使用自定义数量的项目:
item.setEquipments(e1, e2, e3);
您可以重新考虑变量的名称。我不明白,为什么 ItemOrder 对象被称为 "item" - 而你通过 .setEquipments(...)
设置了 "Items" 个对象
我正在为 API 设置值,我需要为 class 数据类型变量设置值,它是一个数组,我需要知道如何设置值?
我在 java 中尝试过,但我一直遇到编译时错误
Items equipmenxxts = new Items ();
equipmenxxts.setDKU(savedRequest.DKUType());
equipmenxxts.setQuantity(savedRequest.getQuantity());
item.setEquipments(equipmenxxts);
**//error setEquipments(Items[]) in ItemOrder cannot be applied to (Items)**
api class 设置值
public class ItemOrder implements java.io.Serializable {
private java.lang.String company,
private Items[] equipments; // class given below
public ItemOrder() {
}
public ItemOrder(Items[] equipments) {
this.equipments = equipments;
}
public java.lang.String getCompany() {
return company;
}
public void setCompany(java.lang.String company) {
this.company = company;
}
public Items[] getEquipments() {
return equipments;
}
public void setEquipments(Items[] equipments) {
this.equipments = equipments;
}
}
上面使用的这个class的数据类型
public class Items implements java.io.Serializable {
private java.lang.String DKU;
private int quantity;
public Items() {
}
public Items(String DKU, int quantity) {
this.DKU = DKU;
this.quantity = quantity;
}
}
api class设置值
@Service("clApiService")
public class NewApiImpl implements NewApiService {
@Override
public Request completeapiNewOrderRep(ServletWebRequest webRequest) {
try {
ItemOrder item = new ItemOrder();
item.setCompany(req.getCompany());
item.setEquipments(); //error setEquipments(Items[]) in ItemOrder cannot be applied to ()**
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
我希望将(req.setDKU 和数量)的值设置为 item.setEquipments( );
根据我的研究,为数组制作 set
有点设计错误。但是,您可以制作一个 void setItems(Items i)
,在参数上引入一个 ItemOrder
的特定索引,或者您可以制作一个 "superset",这不是一个真实的集合:
public void superSet(ItemOrder io){
this.equipments=io.setEquipments(Items[] i);
}
.setEquipments(Items[]) 需要一组项目,但您只传递了一个项目。
首先尝试创建一个包含您的项目的数组:
item.setEquipments(new Items[] {equipmenxxts});
或者,您可以将 equipmentxxts 创建为数组:
final Items[] equipmenxxts = new Items[1];
equipmenxxts[0].setDKU(savedRequest.DKUType());
equipmenxxts[0].setQuantity(savedRequest.getQuantity());
item.setEquipments(equipmenxxts);
此外,以这种方式设置多个项目时,请确保不要暴露您的 class' 内部状态,除非您 真的 知道自己在做什么——为什么!您可以考虑为您的方法使用可变数量的参数:
public Items[] getEquipments() {
return Arrays.copyOf(equipments, equipments.length);
}
public void setEquipments(Items... equipments) {
this.equipments = Arrays.copyOf(equipments, equipments.length);
}
现在您可以使用数组作为参数调用 .setEquipments(...),或者使用自定义数量的项目:
item.setEquipments(e1, e2, e3);
您可以重新考虑变量的名称。我不明白,为什么 ItemOrder 对象被称为 "item" - 而你通过 .setEquipments(...)
设置了 "Items" 个对象