nullobject for Java中的File [英] nullobject for File in Java

查看:196
本文介绍了nullobject for Java中的File的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类,偶尔会被 null 文件对象传递。在正常操作期间,它使用 Scanner 类来解析文件。



而不是用 null 检查文件对象,我以为我可以替换文件

但是,它看起来像文件不是真正设计的被延长有没有任何指针有关如何做到这一点?

解决方案

您可以将使用该文件的对象替换为NullObject



例如,您可以使用NullInputStream并将其传递给扫描仪。



之前:

  public void whatever(File f){

扫描仪扫描仪=新扫描仪(f);

...
}

之后

  public void whatever(File f){

扫描仪扫描仪= new Scanner(getInputStreamFrom(f));

...
}

喜欢:

 私有final InputStream getInputStreamFrom(File f){

if(f == null& ;&!f.exists()){
return NullInputStream.instance;
}

返回新的InputStream(new FileInputStream(f));

}


class NulllInputStream扩展InputStream {

private final static NullInputStream instance = new NullInputStream();

private NullInputStream(){
}

public int read(){
return -1;
}
....其他相关方法在这里...
}

显然编码仔细,不在3分钟内。因为我:) :) :)


I have a class that occasionally gets passed null for File objects. During normal operation it uses a Scanner class to parse through the file.

Instead of littering my code with null checks against the File objects, I thought I could replace the Files with nullobjects (Gang of Four style).

However, it looks like File isn't really designed to be extended. Does any one have any pointers on how to do this?

解决方案

You can replace the object that uses the file with a NullObject

For instance, you can use a NullInputStream and pass it to the scanner.

Before:

 public void whatever( File f ) { 

     Scanner scanner = new Scanner( f );

     ...
 }

After

 public void whatever( File f ) { 

      Scanner scanner = new Scanner( getInputStreamFrom( f ) );

      ...
 }

And have that method implemented like:

 private final InputStream getInputStreamFrom( File f ) {

      if( f == null && !f.exists() ) { 
          return NullInputStream.instance;
      }

      return new InputStream( new FileInputStream( f ) );

 }


 class NulllInputStream extends InputStream {

      private final static NullInputStream instance = new NullInputStream();

      private NullInputStream() {
      }

      public int read() { 
          return -1; 
      }
      .... other relevant methods here... 
 }

Obviously coded carefully and not in 3 mins. as I did :) :) :)

这篇关于nullobject for Java中的File的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆