【发布时间】:2014-06-15 09:06:03
【问题描述】:
我在 Android Studio 中连接字符串时遇到了一个问题。似乎最大长度为 120 个字符,但仅限于连接时。
如果我有这个例子:
private static final String HOW_LONG_CAN_A_STRING_BE =
"123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "";
String test = HOW_LONG_CAN_A_STRING_BE;
当我将鼠标悬停在字符串 HOW_LONG_CAN_A_STRING_BE 上时,它会解析连接的字符串。
但是,如果我像本例中那样添加更多字符:
private static final String HOW_LONG_CAN_A_STRING_BE =
"123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "123456789A"
+ "1";
String test = HOW_LONG_CAN_A_STRING_BE;
当我将鼠标悬停在 HOW_LONG_CAN_A_STRING_BE 上时,它会导致错误出现在 Android Studio 的事件日志中,其中包含以下详细信息:
"123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A12345 ...
": Incorrect expression ""123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A12345 ...
"".
com.intellij.util.IncorrectOperationException: Incorrect expression ""123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A12345 ...
"".
at com.intellij.psi.impl.PsiJavaParserFacadeImpl.createExpressionFromText(PsiJavaParserFacadeImpl.java:325)
at com.intellij.psi.impl.PsiElementFactoryImpl.createExpressionFromText(PsiElementFactoryImpl.java:667)
at com.intellij.codeInsight.javadoc.JavaDocInfoGenerator.calcInitializerExpression(JavaDocInfoGenerator.java:613)
at com.intellij.codeInsight.javadoc.JavaDocInfoGenerator.appendInitializer(JavaDocInfoGenerator.java:661)
at com.intellij.codeInsight.javadoc.JavaDocInfoGenerator.generateFieldJavaDoc(JavaDocInfoGenerator.java:459)
at com.intellij.codeInsight.javadoc.JavaDocInfoGenerator.generateDocInfoCore(JavaDocInfoGenerator.java:231)
at com.intellij.codeInsight.javadoc.JavaDocInfoGenerator.generateDocInfo(JavaDocInfoGenerator.java:255)
at com.intellij.lang.java.JavaDocumentationProvider.generateExternalJavadoc(JavaDocumentationProvider.java:512)
at com.intellij.lang.java.JavaDocumentationProvider.generateDoc(JavaDocumentationProvider.java:500)
at com.intellij.lang.documentation.CompositeDocumentationProvider.generateDoc(CompositeDocumentationProvider.java:138)
at com.intellij.codeInsight.documentation.DocumentationManager$9$4.compute(DocumentationManager.java:665)
at com.intellij.codeInsight.documentation.DocumentationManager$9$4.compute(DocumentationManager.java:660)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932)
at com.intellij.codeInsight.documentation.DocumentationManager$9.getDocumentation(DocumentationManager.java:659)
at com.intellij.codeInsight.documentation.DocumentationManager$10.run(DocumentationManager.java:763)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:327)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at com.intellij.util.concurrency.QueueProcessor$RunnableConsumer.consume(QueueProcessor.java:298)
at com.intellij.util.concurrency.QueueProcessor$RunnableConsumer.consume(QueueProcessor.java:295)
at com.intellij.util.concurrency.QueueProcessor$2$1.run(QueueProcessor.java:110)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.concurrency.QueueProcessor$2.consume(QueueProcessor.java:107)
at com.intellij.util.concurrency.QueueProcessor$2.consume(QueueProcessor.java:104)
at com.intellij.util.concurrency.QueueProcessor$3$1.run(QueueProcessor.java:215)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.concurrency.QueueProcessor$3.run(QueueProcessor.java:212)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:419)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:149)
这是一个问题,因为我正在尝试创建一个数据库,并且包含数据库创建语句的字符串大于 120 个字符。以前有没有人遇到过这个问题,如果有,我该如何解决它而不必让我的列名不可读?
这是失败的创建语句:
创建表提醒( id 整数主键, createdAt TEXT, 开始日期文本, 结束日期文本, 提醒时间整数, 重复整数, 延迟时间整数, 报警整数, 提醒在 INTEGER 上, 说明文字 )【问题讨论】:
-
这只是悬停在变量上时的问题吗?
-
通过我的初始测试,当我运行代码时似乎并不重要。它必须只是一个 android studio 或 intellij-idea 问题。我将不得不密切关注它。
-
这个问题似乎已经通过更新到 Android Studio 版本 0.61 得到解决
-
一般来说,IDE 内部错误通常与你的代码本身没有任何关系。
标签: android string intellij-idea