私はいくつかのクラスがあります:PERSONNAME、personSurname、taskDescription、docDescriptionと:グァバオプション
public class Person {
private String personName;
private String personSurname;
private int age;
private Task task;
private Document document;
//getters and setters
public class Task {
private long taskNumber;
private String taskDescription;
private String taskPriority;
//get&set
public class Document {
private String docName;
private String docDescription;
private long docNumber;
private String docType;
private DocumentAuthor documentAuthor;
// get&set
public class DocumentAuthor {
private String documentAuthorName;
private long documentAuthorNumber;
private String documentAuthorDescription;
// get&set
とした後、私のようないくつかのフィールドから(のStringBuilderとの)説明を構築する必要がPersonオブジェクトを作成しますdocumentAuthorDescription。問題は、いくつかのオブジェクト/フィールドのヌル値をチェックする必要があるときです(私は説明にヌルを格納したくありません)。この時点で私はこのようにしています:
private static String setStringBuilder(Person person) {
StringBuilder sb = new StringBuilder();
//create Optional objects for every class except Person:
Optional<Document> personDocument = Optional.fromNullable(person.getDocument());
Optional<Task> personTask = Optional.fromNullable(person.getTask());
Optional<DocumentAuthor> personDocumentAuthor = Optional.fromNullable(person.getDocument().getDocumentAuthor());
//create List where i add fields for description
List<Optional<String>> list = new ArrayList();
list.add(Optional.fromNullable(person.getPersonName()));
list.add(Optional.fromNullable(person.getPersonSurname()));
//in this section i check presents of objects:
if (personDocument.isPresent()) {
list.add(Optional.fromNullable(person.getDocument().getDocDescription()));
list.add(Optional.fromNullable(person.getDocument().getDocType()));
}
if (personTask.isPresent()) {
list.add(Optional.fromNullable(person.getTask().getTaskDescription()));
}
if (personDocumentAuthor.isPresent()) {
list.add(Optional.fromNullable(person.getDocument().getDocumentAuthor().getDocumentAuthorName()));
}
//here i build StringBuilder from fields stored in list
for (Optional<String> optional : list) {
if (optional.isPresent()) {
sb.append(optional.get());
sb.append(" ");
}
}
String description = sb.toString();
return description;
}
しかし、私はGuava Optionalalsでこれを行うための最もクールな方法があると信じています。特に私はヌルの魔女を確認すると。だからplsは私にいくつかのアドバイスを与えて、私の悪い悪い英語を許してください:)
これは実際にはnullよりもきれいになることはありません。 –
私はOptionalsで何もできませんか? – Transell
このタスクではありません。 –