A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 禅伤 中级黑马   /  2014-8-2 00:25  /  681 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在毕老师讲解管道流的21天视频中定义的内部类Write和Read类都是非静态的 那为什么在Demo类中静态的main方法中还能调用Write和Read类来实例化对象,反正我像那样使用内部类来定义Write和Read类是不能再Demo类中静态的main方法中调用,只有将他们改成static的才能使用,代码如下,有人知道原因吗?package com.hubj.objectDemo;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class PipedStreamDemo {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {

                PipedInputStream in = new PipedInputStream();
                PipedOutputStream out = new PipedOutputStream();
                in.connect(out);
                Read r = new Read(in);
                Write w = new Write(out);
               
               
                new Thread(r).start();
                new Thread(w).start();
        }

  static        class Write implements Runnable {

                PipedOutputStream out = new PipedOutputStream();

                public Write(PipedOutputStream out) {

                        this.out = out;
                }

                @Override
                public void run() {
                        try {
                                out.write("piped stream is coming ".getBytes());
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }

                }
        }

  static class Read implements Runnable {

                PipedInputStream in = new PipedInputStream();

                public Read(PipedInputStream in) {
                        this.in = in;
                }

                @Override
                public void run() {
                        byte[] b = new byte[1024];

                        try {
                                int len = in.read(b);
                                String s = new String(b, 0, len);
                                System.out.println(s);
                                in.close();

                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }

        }
}




1 个回复

倒序浏览
试试局部内部类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马