【问题标题】:Maximum String length when concatenating strings in Android studio在 Android Studio 中连接字符串时的最大字符串长度
【发布时间】: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


【解决方案1】:

我在Artjom B的评论后跟进,发现并没有影响数据库的创建。

我最近更新到 Android Studio 0.61 版,问题似乎不再存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-12
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    相关资源
    最近更新 更多