2014-01-30 48 views
3

以下返回一个内部类的实例从一个静态方法是其中我不能改变用户的要求:在Java中

  1. 一类以一个静态接口(所有的方法都是静态的)。

  2. 一种具体的方法返回一个对象ArrayList<String>和一个File对象。

以下是我执行上述要求:

  1. 其含有ArrayList<String>对象和对象File内部类。

  2. 具体方法初始化内部类的一个实例并在最后返回它。

不过,我不能没有创造外部类的一个实例来创建内部类的一个实例:

public class Outer 
{ 
    public class Inner 
    { 
     ArrayList<String> strings; 
     File    file; 
    } 

    public static Inner method() 
    { 
     Inner inner = new Outer().new Inner(); 
     ... 
     return inner; 
    } 
} 

除了是“丑”,在new Outer().new Inner()感觉相当不正确。

是否有不同的方法可以避免必须实例化外部类?

+1

嵌套在其他地方使用的类是错误的设计。考虑分离它们。直接来自甲骨文,“_ [嵌套]是一种对仅在一个地方使用的类进行逻辑分组的方法:如果一个类仅对另一个类有用,则将其嵌入该类并将它们保持在一起是合乎逻辑的。嵌套这样的“帮手类”使他们的包更加简化._“ – Rainbolt

回答

6

如果您将内部类设为静态(即,您编写了public static class Inner),则不需要外部类的实例;你可以写new Outer.Inner()

+0

那简单?男人......我应该试着这样开始(把它放在我的头上,但看不出为什么会有所帮助);谢谢 –