Java File构造函数 - 将File对象与String结合使用

时间:2014-10-02 23:00:45

标签: java

随机发现以下代码在Java中有效。 Eclipse不会显示错误,并且在使用programm时它不会出现RuntimeException

File f1 = new File("");
File f2 = new File(f1 + "");

为什么这样做? f1绝对不是String,为什么我们可以将两个不同的对象与+运算符组合在一起? File是Object的 direct 子类,我们无法将StringFile对象合并,因为它们主要是不同的对象。 File还有一个uri构造函数,但为什么这应该是一个uri? Fileuri处于技术视图中,来自java绝对不同的对象(同样来自对象的直接子类,并且彼此之间没有上下文),为什么这会起作用呢? / p>

1 个答案:

答案 0 :(得分:7)

由于String转换,这是可能的。如果运算符为+,其中一个操作数为String,而另一个操作数不是,则String转换发生在非String的操作数上。通过调用String将其转换为toString()

JLS, Section 5.1.11,涵盖了这个:

  

任何类型都可以通过字符串转换转换为String类型。

...

  

现在只需要考虑参考值:

     
      
  • 如果引用为null,则将其转换为字符串“null”(四个ASCII字符n,u,l,l)。

  •   
  • 否则,转换的执行就好像通过调用没有参数的引用对象的toString方法一样;但是如果调用toString方法的结果为null,则使用字符串“null”。

  •