首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的$符号是什么?请看一下下面的Java代码

Java中的$符号是什么?请看一下下面的Java代码
EN

Stack Overflow用户
提问于 2012-02-05 00:30:37
回答 4查看 271关注 0票数 7

我到处搜索,试图弄清楚val$editorkit或下面的$符号是什么意思,但没有luck...please帮助...

代码语言:javascript
复制
private synchronized void updateHtmlEditor(HTMLEditorKit editorkit, StringReader reader)
  {
    Runnable runnable = new Runnable(editorkit, reader)
    {
      public void run() {
        try {
          this.val$editorkit.read(this.val$reader, LinkParser.this.htmlViewEditor.getDocument(), LinkParser.this.htmlViewEditor.getDocument().getLength());

        } catch (IOException ex) {
          Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex);
        } catch (BadLocationException ex) {
          Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex);
        }
      }
    };
    SwingUtilities.invokeLater(runnable);
  }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-05 05:45:29

$符号由Java编译器用于生成的内部类、合成字段和方法的名称。它对Java源代码中的标识符有效,但不鼓励使用。

您显示的代码看起来像是匿名内部类的反编译代码。方法updateHtmlEditor中的匿名Runnable实现访问其周围方法的参数。为了使这种访问成为可能,需要将参数声明为final。在Java代码中,匿名类有三个最终的实例属性:包含外部实例LinkParser.thisthis$0、包含外部方法参数的val$editorkit和包含外部方法参数的val$reader,以及一个具有三个参数的构造函数,该构造函数将其参数分配给属性。

还要注意,LinkParser.this.htmlViewEditor是对外部类LinkParser的属性的引用。在此示例中,可以省略对外部实例LinkParser.this的显式引用。

原始源代码如下所示:

代码语言:javascript
复制
private synchronized void updateHtmlEditor(final HTMLEditorKit editorkit, final StringReader reader)
  {
    Runnable runnable = new Runnable()
    {
      public void run() {
        try {
          editorkit.read(reader, htmlViewEditor.getDocument(), htmlViewEditor.getDocument().getLength());
        } catch (IOException ex) {
          Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex);
        } catch (BadLocationException ex) {
          Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex);
        }
      }
    };
    SwingUtilities.invokeLater(runnable);
  }
票数 3
EN

Stack Overflow用户

发布于 2012-02-05 00:32:37

它并没有什么特别的意思--它只是一个字母,构成了名称的一部分,就像它前面的l或者后面的e一样。

有关名称中允许和不允许的内容的完整详细信息,请参阅Identifiers上的JLS部分。

票数 15
EN

Stack Overflow用户

发布于 2012-02-05 00:35:05

我们真的不能说我猜,因为你没有提供变量声明,但在Java语言中,$可以是变量名的一部分,例如,你可以这样做:

代码语言:javascript
复制
String str$rr = "Hello";
System.out.println(str$rr);

类似这样的东西将打印Hello

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9142397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档