【发布时间】:2017-03-25 00:40:40
【问题描述】:
我是小程序的新手,遇到了一些不寻常的事情。在我经历的一个程序中,applet html tag 在Applet Java file (.java) 中作为评论被提及,但评论似乎正在执行。这怎么可能?
代码:
import java.awt.*;
import java.applet.*;
/*<applet code="MyApplet" width=100 height=50></applet> */
//why we give comment here and how it is executed ??
class MyApplet extends Applet
{
public void paint(Graphics g)
{
g.drawString("A Simple Applet",100,100);
}
}
评论:
/*<applet code="MyApplet" width=100 height=50></applet> */
上面的评论是如何被执行的? cmets 不是要被跳过吗?
为什么 Oracle 或任何其他网站上没有提到这种方法? 甚至 Oracle 也要求创建单独的 HTML 文件。那么这种方法是否使用一些 3rd 方库来执行评论?
当我不公开课程以及保持文件和课程名称不同时,我也会收到错误消息。
有人可以解释一下这个方法吗?我用谷歌搜索了很多,但找不到关于这种在评论中包含标签的方法的解释。 SO上有一个帖子,但答案并不重要。请帮忙。
有人怎么会意外地发现这是可能的?这是 Applet 类的任何特殊功能吗?
【问题讨论】:
-
我认为
appletviewer MyApplet.java将MyApplet.java解析为HTML,它会忽略不支持的元素,例如import java.awt.*;。 docs.oracle.com/javase/7/docs/technotes/tools/… -
@Zakki 非常感谢。该链接说appletviewer 识别与运行applet 相关的HTML。
But how does it override the usual mechanism of skipping the comment lines?也解析 cmets 吗? -
“但是它是如何覆盖跳过注释行的通常机制的呢?” 您考虑的是编译器,而不是小程序查看器。不同的工具以不同的方式工作。 “它也解析 cmets 吗?” AFAIU applet 查看器只解析 Java 源代码(注意,源代码,而不是二进制文件)直到类定义。按照设计,它忽略任何不在注释中的代码,并且只检查注释代码中可能的小程序标签。这个新功能是在 Java 1.7 或 1.6 AFAIR 中引入的。所以是的,就像@zakki 建议的那样。
-
@AndrewThompson 我没有明白这一点——“按照设计,它会忽略任何不在评论中的代码”。这是否意味着它只查找cmets,然后进一步选择带有applet标签的cmets?
-
我愿意,但前提是@zakki 不想要发布答案(如果您愿意,请随意引用或改写我的 cmets 中的任何内容,只要您认为合适)。我认为他们比我得到了正确的答案(并且更好,给出了链接)。
标签: java html applet comments appletviewer