我刚刚查看了javax.ws.rs.core.MediaType的代码并想知道throw new RuntimeException("Compiled Code")
,因为我以前从未见过它。我认为是一种“未实施”的形式,但不知道。
package javax.ws.rs.core;
import java.util.Map;
import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;
public class MediaType {
// some variables and constants ...
public static MediaType valueOf(String string) throws IllegalArgumentException {
//compiled code
throw new RuntimeException("Compiled Code");
}
public MediaType(String string, String string1, Map<String, String> map) {
//compiled code
throw new RuntimeException("Compiled Code");
}
public MediaType(String string, String string1) {
//compiled code
throw new RuntimeException("Compiled Code");
}
...
}
这是什么?
答案 0 :(得分:7)
基于您发布的代码片段我假设您正在查看* .class文件而不是* .java文件?
如果是这样,那么“编译代码”和//编译代码就在那里,因为你的IDE试图给你一些可编程的* .java类的可读表示,所以你至少可以看看有哪些方法可用在那堂课。
“编译代码”绝不是抛出RunTimeException时给出的正确错误消息。
每个IDE(eclipse,intelliJ,..)中* .class文件的显示都不同
如果您希望能够查看已执行的代码,则需要未编译的* .java文件。
答案 1 :(得分:2)
您基本上导航到Java类文件,该文件尚未附加任何源文件。
您所看到的是NetBeans IDE代表的MediaType.class
文件。它与您通过调用javap MediaType.class
看到的输出基本相同。例外情况只是警告你。它不是文件的 true 内容。您只看到方法签名和公共字段,因为无论如何都是由.class文件公开的。其余的是省略的实现,因为没有源代码,你只能得到机器代码(你真的想深入研究吗?最有可能更喜欢阅读其他文档,或者在google上找到源代码。)
JDK分为公共和私有编程接口。公共文档有很好的文档,并附带源代码。它的私有部分并不总是一样。
答案 2 :(得分:1)
要添加到其他答案,您可以使用反编译器查看.class文件内容(已执行的说明)。一个很好的是http://java.decompiler.free.fr/
的Java Decompiler答案 3 :(得分:0)
我在jar文件中有“相同”的代码。最近我正在使用这个jar文件,我不知道在哪里可以查看代码。在NetBeans中打开文件后,结果如下:
public class ConsolaEjecucion extends JFrame {
private JPanel jContentPane;
private JScrollPane jScrollPane;
private JTextArea display;
private JProgressBar barraProgreso;
private JFrame frame;
public ConsolaEjecucion(JFrame frame) {
//compiled code
throw new RuntimeException("Compiled Code");
}
private JPanel getJContentPane() {
//compiled code
throw new RuntimeException("Compiled Code");
}
...
}
但是,功能代码不存在!感谢。