在SUN的类库中或者是在比较大型的JAVA程序当中经常会碰到这样一种情况(比如,在Swing类中的JFrame类中的getContentPane方法)这个方法是Container类型的方法,在编写Swing程序的时候经
常会遇到这样一个语句:this.getContentPane.add(参数);这里的add() 方法是Container的一个方法体,但是在调用这个方法的时候并没有new 类,那么这个类是怎样被凋入内存的呢?

解决方案 »

  1.   

    this.getContentPane()返回的是contain类一个实例。
    public class NonReture {
      public NonReturn getNonReturn(){
        return aNonRetrun;
      }
      public void add(){
      }
    }如果this是一个NonReture的实例,那么
    this.getNonReturn().add();
      

  2.   

    this.getContentPane()返回的是一个container类型,或者说是一个container的一个实例对象,所以不需要new来创建新的对象来调用方法add(),直接调用即可!
      

  3.   

    类似,你从KFC里面买了一个鸡腿,你没有动手杀鸡,KFC的服务生也没有,但是之前的某处,肯定有某人杀鸡了
      

  4.   

    呵呵,前辈们说的都很有道理,在这里向大家表示感谢!前段时间我在SUN的类库源代码中查了下,它的确是在调用的Method当中返回了一个Container类型的对象,问题迎刃而解,再次感谢前辈们的指点!!小弟这里还有一个棘手的问题,一直不解,还须前辈帮助!是这样的:
    看这句:BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    这句在JAVA的I/O系统的应用当中再普通不过了,但是我还是对其中有些问题很事疑惑!System类中的in属性是InputStream类型的这个类是一个abstract class.于是我想这个抽象类型的对象应该是指向他的一个子类的具体类,那么这个抽象类才真正具有意义!带着这个疑惑我查了下SUN的类库,结果让我吃惊!原句是这样:
     public final static InputStream in = nullInputStream();//这是在System类中.
     private static InputStream nullInputStream() throws NullPointerException {
    if (currentTimeMillis() > 0)
        return null;
    throw new NullPointerException();
        }
    这样的话 in得到了null他又能做什么呢??怎样能实现获得系统控制台的功能呢??(不解!!)
    另外,在SUN的库中这句引用在哪里?
    import sun.net.InetAddressCachePolicy;
    import sun.reflect.Reflection;
    import sun.security.util.SecurityConstants;
    我在SUN的类库中怎么也找不到上面的这个包!!
    最后一个问题:
    在System类中经常有关键字native,我也清楚他实在吊用系统的类库或这是第三方的文件,那么JAVA到底是怎样实现调用的呢??(找了半天没找到这个引用路径)
    注:我的JDK版本是1.4.2_12
    先谢!!!