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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© youc3576 黑马帝   /  2011-9-18 08:14  /  2009 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家帮我看看 这个代码为啥报错啊?我是看完视频自己想出来的 为什么不可以?代码如下:
package com.youc;

import java.io.File;
import java.io.FileOutputStream;

public class OutputStream {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception{
                // TODO Auto-generated method stub
                File f = new File("d:"+File.separator+"tset.txt");
            OutputStream out = null;
                out = new FileOutputStream(f);
                String str = "hello  nihao ";
                byte[] b = str.getBytes();
                out.write(b);
        }

}
首先OutputStream 的直接子类有ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream 那为什么out在实例化对象的时候不可以实例出
FileOutputStream对象?而要求我强制定义成FileOutputStream的类型?
PS;包都import了。。。。。thank you。。。。

7 个回复

倒序浏览
黑马网友  发表于 2011-9-18 08:38:57
沙发
你的代码没错啊
能成功执行的:o
回复 使用道具 举报
黑马网友  发表于 2011-9-18 12:10:48
藤椅
你的OutputStream out = null这一句中OutputStream 和类名一样,程序会认为你是在新建一个类的对象,而不是新建OutputStream,你把类名改掉就可以了,比如像这样:
public class OutputStreamtest {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
            // TODO Auto-generated method stub
            File f = new File("d:"+File.separator+"tset.txt");
        OutputStream out =  new FileOutputStream(f);
            String str = "hello  nihao ";
            byte[] b = str.getBytes();
            out.write(b);
    }

}
我试过,可以成功运行.
回复 使用道具 举报
黑马网友  发表于 2011-9-18 12:58:28
板凳
[quote] 原帖由 [i]王清云[/i] 于 2011-09-18 12:10 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=10037&ptid=1579][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]你的OutputStream out = null这一句中OutputStream 和类名一样,程序会认为你是在新建一个类的对象,而不是新建OutputStream,你把类名改掉就可以了,比如像这样:
public class OutputStreamtest {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
            // TODO Auto-generated method stub
            File f = new File("d:"+File.separator+"tset.txt");
        OutputStream out =  new FileOutputStream(f);
            String str = "hello  nihao ";
            byte[] b = str.getBytes();
            out.write(b);
    }

}
我试过,可以成功运行. [/quote]
二楼说的对,自己定义的类名有问题。
回复 使用道具 举报
黑马网友  发表于 2011-9-18 13:09:57
报纸
乱定义类名
回复 使用道具 举报
黑马网友  发表于 2011-9-18 13:17:45
地板
自己定义的类名如果与系统的类名(或者他人的类名)冲突,调用的时候要指定包名的,要不然调用的可能是系统的类,或者异常
回复 使用道具 举报
黑马网友  发表于 2011-9-18 17:37:10
7#

回复 藤椅 的帖子

谢谢!!!!!!!!!这下知道了记住了!!!

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-20 22:22:31
8#
public class OutputStream-----> 定义的类名与java类库中的java.io.OutputStream一样了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马