java—如何在另一个类中设置和获取内部类的字段

ltskdhd1  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(447)
  1. package com.pr.trio;
  2. import java.util.List;
  3. public class lalala {
  4. private List<SegmentationFieldValue> segmentationFieldValues;
  5. public static class SegmentationFieldValue {
  6. private Integer segmentationFieldId;
  7. private Integer segmentationFieldGroupId;
  8. private String value;
  9. public Integer getSegmentationFieldId() {
  10. return segmentationFieldId;
  11. }
  12. public void setSegmentationFieldId(Integer segmentationFieldId) {
  13. this.segmentationFieldId = segmentationFieldId;
  14. }
  15. public Integer getSegmentationFieldGroupId() {
  16. return segmentationFieldGroupId;
  17. }
  18. public void setSegmentationFieldGroupId(Integer segmentationFieldGroupId) {
  19. this.segmentationFieldGroupId = segmentationFieldGroupId;
  20. }
  21. public String getValue() {
  22. return value;
  23. }
  24. public void setValue(String value) {
  25. this.value = value;
  26. }
  27. }
  28. public List<SegmentationFieldValue> getSegmentationFieldValues() {
  29. return segmentationFieldValues;
  30. }
  31. public void setSegmentationFieldValues(List<SegmentationFieldValue> segmentationFieldValues) {
  32. this.segmentationFieldValues = segmentationFieldValues;
  33. }
  34. }
  1. package com.pr.trio;
  2. import java.util.Arrays;
  3. public class kk {
  4. public static void main(String[] args) {
  5. lalala l1 = new lalala();
  6. //currently passed as an empty array, want to set SegmentationFieldId & value here from inner class
  7. l1.setSegmentationFieldValues(Arrays.asList());
  8. //lalala.SegmentationFieldValue.this.setSegmentationFieldId(15);
  9. System.out.println(l1.getSegmentationFieldValues());
  10. }
  11. }

所以在这里,我不能为segmentation字段而不是空数组传递值,这是一个错误。那么如何设置内部类字段的值并将其传递到我的列表中呢?

kuarbcqp

kuarbcqp1#

视为你的 SegmentationFieldValue 班级是 public ,在另一个类中使用它很简单,基本上有两种方法:
首先是导入内部类:

  1. import com.pr.trio.lalala.SegmentationFieldValue;

第二种方法是在使用类名时对其进行限定:

  1. lalala.SegmentationFieldValue a = new lalala.SegmentationFieldValue();

然后可以调用此类上的setter,并使用调用中的对象 setSegmentationFieldValues :

  1. lalala.SegmentationFieldValue a = new lalala.SegmentationFieldValue();
  2. a.setSegmentationFieldId(1);
  3. a.setSegmentationFieldGroupId(1);
  4. a.setValue("a");
  5. lalala.SegmentationFieldValue b = new lalala.SegmentationFieldValue();
  6. b.setSegmentationFieldId(2);
  7. b.setSegmentationFieldGroupId(1);
  8. b.setValue("b");
  9. l1.setSegmentationFieldValues(Arrays.asList(a, b));

从您的注解代码来看,您似乎也在寻找一种将元素添加到列表中的速记方法。一个简单的实现可以像这样(在类中 lalala ):

  1. public void addSegmentationFieldValue(Integer id, Integer groupId, String value)
  2. {
  3. if (segmentationFieldValues == null)
  4. {
  5. segmentationFieldValues = new ArrayList<>();
  6. }
  7. SegmentationFieldValue result = new SegmentationFieldValue();
  8. result.setSegmentationFieldId(id);
  9. result.setSegmentationFieldGroupId(groupId);
  10. result.setValue(value);
  11. segmentationFieldValues.add(result);
  12. }

之后,您可以在 main 方法 k1 :

  1. l1.addSegmentationFieldValue(1, 1, "a");
展开查看全部

相关问题