aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/squareup/javapoet/JavaFile.java
diff options
context:
space:
mode:
authorJesse Wilson <jwilson@squareup.com>2015-01-26 23:17:52 -0500
committerJesse Wilson <jwilson@squareup.com>2015-01-26 23:37:58 -0500
commita8d7572208bf3300c504878d8ed8c58f91e2fd8e (patch)
treed89c0430ebadfa8070c5ec2e1f84065d56f99aec /src/main/java/com/squareup/javapoet/JavaFile.java
parent104f20fb07eb2318a85a3de7457b56435e579fc5 (diff)
downloadjavapoet-a8d7572208bf3300c504878d8ed8c58f91e2fd8e.tar.gz
Option to skip java.lang imports.
Diffstat (limited to 'src/main/java/com/squareup/javapoet/JavaFile.java')
-rw-r--r--src/main/java/com/squareup/javapoet/JavaFile.java28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/main/java/com/squareup/javapoet/JavaFile.java b/src/main/java/com/squareup/javapoet/JavaFile.java
index e7eebe4..acbcc90 100644
--- a/src/main/java/com/squareup/javapoet/JavaFile.java
+++ b/src/main/java/com/squareup/javapoet/JavaFile.java
@@ -39,11 +39,13 @@ public final class JavaFile {
public final CodeBlock fileComment;
public final String packageName;
public final TypeSpec typeSpec;
+ public final boolean skipJavaLangImports;
private JavaFile(Builder builder) {
this.fileComment = builder.fileComment.build();
this.packageName = builder.packageName;
this.typeSpec = builder.typeSpec;
+ this.skipJavaLangImports = builder.skipJavaLangImports;
}
public void emit(Appendable out, String indent) throws IOException {
@@ -69,10 +71,14 @@ public final class JavaFile {
codeWriter.emit("\n");
}
- if (!codeWriter.importedTypes().isEmpty()) {
- for (ClassName className : codeWriter.importedTypes().keySet()) {
- codeWriter.emit("import $L;\n", className);
- }
+ int importedTypesCount = 0;
+ for (ClassName className : codeWriter.importedTypes().keySet()) {
+ if (skipJavaLangImports && className.packageName().equals("java.lang")) continue;
+ codeWriter.emit("import $L;\n", className);
+ importedTypesCount++;
+ }
+
+ if (importedTypesCount > 0) {
codeWriter.emit("\n");
}
@@ -101,6 +107,7 @@ public final class JavaFile {
private final String packageName;
private final TypeSpec typeSpec;
private CodeBlock.Builder fileComment = CodeBlock.builder();
+ private boolean skipJavaLangImports;
private Builder(String packageName, TypeSpec typeSpec) {
this.packageName = packageName;
@@ -112,6 +119,19 @@ public final class JavaFile {
return this;
}
+ /**
+ * Call this to omit imports for classes in {@code java.lang}, such as {@code java.lang.String}.
+ *
+ * <p>By default, JavaPoet explicitly imports types in {@code java.lang} to defend against
+ * naming conflicts. Suppose an (ill-advised) class is named {@code com.example.String}. When
+ * {@code java.lang} imports are skipped, generated code in {@code com.example} that references
+ * {@code java.lang.String} will get {@code com.example.String} instead.
+ */
+ public Builder skipJavaLangImports(boolean skipJavaLangImports) {
+ this.skipJavaLangImports = skipJavaLangImports;
+ return this;
+ }
+
public JavaFile build() {
return new JavaFile(this);
}