Я бы посоветовал вам создать конструктор для каждого класса, который принимает все необходимые значения.Таким образом, вы можете создавать объекты с гораздо меньшим количеством кода.
MainClass.java:
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.xxx.nsp.constants.Values;
import com.xxx.nsp.dto.Address;
import com.xxx.nsp.dto.SendCVConfirmationNotification;
import com.xxx.nsp.dto.VisibilityInfo;
import com.xxx.nsp.dto.VisibilityType;
import com.xxx.nsp.json.NSPNotificationRequest;
public class MainClass {
public static void main(String[] args) {
Address addr = new Address(Values.addressType, Values.addressLine1,
Values.addressLine2, Values.addressLine3, Values.politicalDivision,
Values.city, Values.state, Values.zipcode, null, Values.phoneNumber);
List<String> accountNumbers = new ArrayList<>();
accountNumbers.add("1233");
accountNumbers.add("2234");
List<VisibilityInfo> visibilityInfo = new ArrayList<>();
visibilityInfo.add(new VisibilityInfo(VisibilityType.THIRD_PARTY,
accountNumbers, addr));
SendCVConfirmationNotification scv = new SendCVConfirmationNotification(
Values.enroleeName, Values.companyName, Values.nickName, visibilityInfo,
Values.hasClaims, Values.hasReturns, Values.cvURL, null);
NSPNotificationRequest nr = new NSPNotificationRequest(Values.transactionId,
Values.clientId, Values.destinationAddress, scv, Values.locale,
Values.mediaType, Values.pageId);
Gson gsonObj = new Gson();
String jsonStr = gsonObj.toJson(nr);
System.out.println(jsonStr);
}
}
добавьте это в SendCVConfirmationNotification.java:
public SendCVConfirmationNotification(String enroleeName, String companyName,
String nickName, List<VisibilityInfo> visibilityInfo, boolean hasClaims,
boolean hasReturns, String cvURL, String emailId){
this.enroleeName = enroleeName;
this.companyName = companyName;
this.nickName = nickName;
this.visibilityInfo = visibilityInfo;
this.hasClaims = hasClaims;
this.hasReturns = hasReturns;
this.cvURL = cvURL;
this.emailId = emailId;
}
добавить это в VisibilityInfo.java:
public VisibilityInfo(VisibilityType visibilityType, List<String> accountNumbers,
Address receivingAddress){
this.visibilityType = visibilityType;
this.accountNumbers = accountNumbers;
this.receivingAddress = receivingAddress;
}
добавить это в Address.java:
public Address(AddressType addressType, String addressLine1, String addressLine2,
String addressLine3, String politicalDivision, String city, String state, String zipcode,
String country, String phoneNumber){
this.addressType = addressType;
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.politicalDivision = politicalDivision;
this.city = city;
this.state = state;
this.zipcode = zipcode;
this.country = country;
this.phoneNumber = phoneNumber;
}
добавить это в NSPNotificationRequest:
public NSPNotificationRequest(String transactionId, String clientId,
String destinationAddress, SendCVConfirmationNotification sendCVConfirmationNotification,
String locale, String mediaType, String pageId){
this.transactionId = transactionId;
this.clientId = clientId;
this.destinationAddress = destinationAddress;
this.sendCVConfirmationNotification = sendCVConfirmationNotification;
this.locale = locale;
this.mediaType = mediaType;
this.pageId = pageId;
//if this class includes any other properties, include them accordingly
}
Редактировать:
Чтобы получить ожидаемый вами результат, вам нужно отредактировать VisibilityType и ваш основной метод:
VisibilityType.java:
public enum VisibilityType {
INBOUND,
OUTBOUND,
FOURTH_PARTY,
THIRD_PARTY;
}
Main:
public static void main(String[] args) {
List<VisibilityInfo> visibilityInfo = new ArrayList<>();
List<String> accountNumbers = new ArrayList<>();
accountNumbers.add("1233");
accountNumbers.add("6722");
visibilityInfo.add(new VisibilityInfo(VisibilityType.FOURTH_PARTY,
accountNumbers, null));
List<String> accountNumbers = new ArrayList<>();
accountNumbers.add("6152");
accountNumbers.add("1277");
visibilityInfo.add(new VisibilityInfo(VisibilityType.OUTBOUND,
accountNumbers, null));
Address addr = new Address(Values.addressType, null,
null, null, null, "downtown test", "NY", "7539", "US", null);
visibilityInfo.add(new VisibilityInfo(VisibilityType.OUTBOUND,
null, addr));
SendCVConfirmationNotification scv = new SendCVConfirmationNotification(
Values.enroleeName, Values.companyName, Values.nickName, visibilityInfo,
Values.hasClaims, Values.hasReturns, Values.cvURL, null);
NSPNotificationRequest nr = new NSPNotificationRequest(Values.transactionId,
Values.clientId, Values.destinationAddress, scv, Values.locale,
Values.mediaType, Values.pageId);
Gson gsonObj = new Gson();
String jsonStr = gsonObj.toJson(nr);
System.out.println(jsonStr);
}
Если я допустил ошибку или неправильно понял вашу проблему, просто скажите мне, и я постараюсь ее исправить.
Несколько советов:
- Старайтесь публиковать менее общие вопросы и более конкретные вопросы, требующие меньше кода
- Изучите документы, конструкторы, типы данных и т. Д.
- Не используйте так многоперечисления.В некоторых случаях они имеют смысл (VisibilityType), а в некоторых - нет (Значения).