2017-03-27 8 views
-1

그래서,이 코드합니다 (Javapoet 해방을 사용)이 있습니다Javapoet : 코드의 적은 라인과 같은 일을 쓰기 (addModifiers)

if (myBeautifulBoolean) <-------------------------- 
          theClass = TypeSpec.classBuilder(classe.getName()) 
            .addModifiers(javax.lang.model.element.Modifier.valueOf(classe.getProte().toString().toUpperCase()), Modifier.FINAL) <------------------- 
            .superclass(father==null?ClassName.OBJECT:father) 
            .addMethods(methods) 
            .addFields(fields) 
            .build(); 
          else 
           theClass = TypeSpec.classBuilder(classe.getName()) 
             .addModifiers(javax.lang.model.element.Modifier.valueOf(classe.getProte().toString().toUpperCase())) <------------------ 
             .superclass(father==null?ClassName.OBJECT:father) 
             .addMethods(methods) 
             .addFields(fields) 
             .build(); 

을 그리고 난이되고 싶어 뭔가 같은 :

       theClass = TypeSpec.classBuilder(classe.getName()) 
            .addModifiers(javax.lang.model.element.Modifier.valueOf(classe.getProte().toString().toUpperCase()), myBeautifulBoolean?Modifier.FINAL:null) <---------- 
            .superclass(father==null?ClassName.OBJECT:father) 
            .addMethods(methods) 
            .addFields(fields) 
            .build(); 

어디에 문제가 있습니까? 내가 작성하는 경우 myBeautifulBoolean Modifier.FINAL : 널 addmodifiers의 매개 변수()가 null이 될 수 없기 때문에, 나는 예외를 얻고, Modifier.NOTFINAL 같은 아무것도 말할 수있는 방법이있다,

그래서이 없다 코드 "Ehi, 부울이 참이면 인수를 추가하고 그렇지 않으면"?

답변

2

addModifiers는 배열을 취합니다. 너는 할 수있어 addModifiers(test ? new Modifier[] { mod, Modifier.FINAL} : new Modifier[] { mod }) 너는 도우미 방법으로 이것을 더 예쁘게 할 수 있었다

public static <T> T[] arr(T... array) { return array; } 

// later 
    .addModifiers(test ? arr(mod, FINAL) : arr(mod))