Java 是否引发新的运行时异常(“编译代码”)?
我刚刚研究了javax.ws.rs.core.MediaType的代码,想知道Java 是否引发新的运行时异常(“编译代码”)?,java,exception,jakarta-ee,Java,Exception,Jakarta Ee,我刚刚研究了javax.ws.rs.core.MediaType的代码,想知道抛出新的RuntimeException(“编译代码”),因为我以前从未见过这种情况。我认为是一种形式的“未实施”,但不知道 package javax.ws.rs.core; import java.util.Map; import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate; public class MediaType { // some variabl
抛出新的RuntimeException(“编译代码”)
,因为我以前从未见过这种情况。我认为是一种形式的“未实施”,但不知道
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");
}
...
}
包javax.ws.rs.core;
导入java.util.Map;
导入javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;
公共类媒体类型{
//一些变量和常量。。。
公共静态MediaType值(字符串字符串)引发IllegalArgumentException{
//编译代码
抛出新的运行时异常(“编译代码”);
}
公共媒体类型(字符串、字符串1、映射){
//编译代码
抛出新的运行时异常(“编译代码”);
}
公共媒体类型(字符串、字符串1){
//编译代码
抛出新的运行时异常(“编译代码”);
}
...
}
这是关于什么的?根据您发布的代码片段,我想您看到的是*.class文件,而不是*.java文件 如果是这样的话,“编译的代码”和//编译的代码就存在了,因为您的IDE试图为那些编译的*.java类提供一些可读的表示,所以您至少可以看看该类中有哪些可用的方法 “已编译代码”绝不是引发RunTimeException时给出的正确错误消息 *.class文件在每个IDE中的表示方式都不同(eclipse、intelliJ等)
如果您希望能够查看执行的代码,则需要未编译的*.java文件。您基本上导航到一个java类文件,该文件没有附加任何源文件 您看到的是由NetBeans IDE表示的
MediaType.class
文件。它的输出基本上与调用javap MediaType.class
所看到的相同。例外情况只是为了警告您。这不是文件的真实内容。您只能看到方法签名和公共字段,因为它是由.class文件公开的。其余的是省略的实现,因为没有源代码,您只能获得机器代码(您真的想深入研究它吗?很可能更喜欢阅读其他文档,或者在google上查找源代码)
JDK分为公共编程接口和私有编程接口。公共版本有很好的文档记录,并附带源代码。API的私有部分并不总是一样的。要添加到其他答案中,可以使用反编译器查看.class文件内容(执行的指令)。一个很好的例子是Java反编译器,我在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");
}
...
}
但是,函数代码不存在!谢谢。你可能是对的。我不认为javax.*类是开源的,所以他肯定没有考虑实际的源代码。