aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/squareup/javapoet/ClassName.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/squareup/javapoet/ClassName.java')
-rw-r--r--src/main/java/com/squareup/javapoet/ClassName.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/com/squareup/javapoet/ClassName.java b/src/main/java/com/squareup/javapoet/ClassName.java
index fdfe81f..0f6d7ce 100644
--- a/src/main/java/com/squareup/javapoet/ClassName.java
+++ b/src/main/java/com/squareup/javapoet/ClassName.java
@@ -17,6 +17,7 @@ package com.squareup.javapoet;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -40,6 +41,11 @@ public final class ClassName extends TypeName implements Comparable<ClassName> {
final String canonicalName;
private ClassName(List<String> names) {
+ this(names, new ArrayList<AnnotationSpec>());
+ }
+
+ private ClassName(List<String> names, List<AnnotationSpec> annotations) {
+ super(annotations);
for (int i = 1; i < names.size(); i++) {
checkArgument(SourceVersion.isName(names.get(i)), "part '%s' is keyword", names.get(i));
}
@@ -49,6 +55,14 @@ public final class ClassName extends TypeName implements Comparable<ClassName> {
: Util.join(".", names);
}
+ @Override public ClassName annotated(AnnotationSpec... annotations) {
+ return annotated(Arrays.asList(annotations));
+ }
+
+ @Override public ClassName annotated(List<AnnotationSpec> annotations) {
+ return new ClassName(names, annotations);
+ }
+
/** Returns the package name, like {@code "java.util"} for {@code Map.Entry}. */
public String packageName() {
return names.get(0);
@@ -203,6 +217,6 @@ public final class ClassName extends TypeName implements Comparable<ClassName> {
}
@Override CodeWriter emit(CodeWriter out) throws IOException {
- return out.emitAndIndent(out.lookupName(this));
+ return emitAnnotations(out).emitAndIndent(out.lookupName(this));
}
}