2010-08-06 48 views
4

我刚刚查看了javax.ws.rs.core.MediaType的代码,并想知道throw new RuntimeException("Compiled Code"),因为我以前从未见过。我认为是一种“未实施”的形式,但不知道。抛出新的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"); 
    } 

    ... 

} 

这是什么一回事?

回答

7

基于您发布的代码片段,我认为您正在查看* .class文件而不是* .java文件?

如果是这样,“编译代码”和/或编译的代码在那里,因为你的IDE试图给你一些这些编译的* .java类的可读表示,所以你至少可以看看什么方法是该类可用。

“编译代码”不会引发RunTimeException时给出的正确错误消息。

的* .class文件的演示是在每一个IDE(Eclipse中的IntelliJ,..)不同

如果你希望能够看看所执行的代码,你将需要未编译的* .java文件。

+1

你可能是对的。我不认为javax。*类是开源的,所以他绝对不会看到实际的源代码。 – Jorn 2010-08-06 14:08:12

2

你基本上导航到一个Java类文件,它没有附加任何源文件。

您所看到的是由NetBeans IDE代表的文件MediaType.class。它基本上与调用javap MediaType.class时所看到的输出相同。唯一的例外是警告你。这不是文件的内容true。你只能看到方法签名和公共字段,因为无论如何这都是由.class文件公开的。剩下的就是实现,因为没有源代码,你只能得到机器代码(你是否真的想深入其中?大多数人更喜欢阅读其他文档,或者在谷歌上找到源代码)。

JDK分为公共和私人编程接口。公开的一个是有据可查的,并带有源代码。 API的私有部分并不总是相同的。

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"); 
    } 

    ... 

} 

但是,功能代码不存在!谢谢。