import java.io.*;
public class file3 //extends FilterInputStream 
{
/*public file3(InputStream in)
{
//this.in=in;
super(in);
}*/
public static void main(String[]args) throws Exception
{

File f=new File("e:\\Lexi\\java\\file1.txt");
FileInputStream fis=new FileInputStream(f);
//FilterInputStream filter=new file3(fis);
                FilterInputStream filter=new FilterInputStream(fis);
for(int i=0;i<f.length();i++)
{
  System.out.print((char)filter.read());

}
fis.close();

}}
为什么不能用FilterInputStream filter=new FilterInputStream(fis);这么实例化;想好长时间没想明白到底是怎么回事

解决方案 »

  1.   

    FilterInputStream(InputStream in) 这个方法是protected 的,无法在不属于它的子类或者同包类访问当前的包与它所在的包不一样,当前类(file3)也不是它的子类
      

  2.   

    我同意前面的看法,这个InputStream类是一个转换流,因此要转换它。
      

  3.   

    FilterInputStream(InputStream in) 这个方法是protected 的,无法在不属于它的子类或者同包类访问 就算是它的子类的话,还有必须在同一个包里面才可以的。
    lz应该看看public,protected,private和不加修饰符有什么区别
      

  4.   

    [code=Java][import java.io.*; 
    public class file3 //extends FilterInputStream 

    /*public file3(InputStream in) 

    //this.in=in; 
    super(in); 
    }*/ 
    public static void main(String[]args) throws Exception 
    { File f=new File("e:\\Lexi\\java\\file1.txt"); 
    FileInputStream fis=new FileInputStream(f); 
    //FilterInputStream filter=new file3(fis); 
                    FilterInputStream filter=new FilterInputStream(fis); 
    for(int i=0;i <f.length();i++) 

      System.out.print((char)filter.read()); } 
    fis.close(); } } ]
      

  5.   

    [code=Java][import java.io.*; 
    public class file3 //extends FilterInputStream 

    /*public file3(InputStream in) 

    //this.in=in; 
    super(in); 
    }*/ 
    public static void main(String[]args) throws Exception 
    { File f=new File("e:\\Lexi\\java\\file1.txt"); 
    FileInputStream fis=new FileInputStream(f); 
    //FilterInputStream filter=new file3(fis); 
                    FilterInputStream filter=new FilterInputStream(fis); 
    for(int i=0;i <f.length();i++) 

      System.out.print((char)filter.read()); } 
    fis.close(); } } ]