返回ArrayList类型的null

时间:2013-10-28 13:25:23

标签: java

我有一个小问题..如何返回Array List类型的null。这是完整的问题:RectangleList类管理一个Rectangle列表。它有一个构造函数,它将矩形的数组列表作为参数。它有一个方法返回具有最小区域的Rectangle(如果列表为空,则返回null)。 谢谢!

以下是我所做的代码:

public Rectangle smallestArea()
            {
            double min = list.get(0).getWidth() * list.get(0).getHeight();
            int k=0;

           if(list.size() > 0)
           {
            for(int i=0; i<list.size(); i++)
                {

                if(list.get(i).getWidth() * list.get(i).getHeight() < min)
                {
                    min = list.get(i).getWidth() * list.get(i).getHeight();
                    k=i;}
                }

             return list.get(k);
           }

           else
               {
               return null;
               }
    }

    And I get this error : java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.rangeCheck(ArrayList.java:604)
        at java.util.ArrayList.get(ArrayList.java:382)
        at RectangleList.smallestArea(RectangleList.java:39)
        at RectangleListTester.main(RectangleListTester.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.horstmann.codecheck.Main$2.run(Main.java:249)
    Error:

    Program exited before all expected values were printed.

我还想指出,这不是学校的功课..这是我简单的工作,我被困在这里。感谢您的支持。

2 个答案:

答案 0 :(得分:1)

null不属于任何类型,可以用于所有类型(不包括基元)。

所以,你总是可以说MyClass obj = null;

如果您有2个具有不同参数类型的重载方法,则可能存在其他问题,例如:

void foo(String s);
void foo(Integer i);

在这种情况下,尝试调用:foo(null)将产生编译错误,因为编译器无法理解您所指的两种方法中的哪一种。在这种情况下,您可以执行转换:

  • foo((String)null)会调用foo()
  • 的第一个版本
  • foo((Integer)null)会调用foo()
  • 的第二个版本

答案 1 :(得分:0)

您可以在需要时返回null。您返回的是对对象的引用,null是对不存在的对象的通用引用,因此您不必对其进行强制转换。

public Rectangle getSmallestAreaRectangle() {
    if (theList.isEmpty()) {
        return null;
    }

    // ... do computations

    return theRectangle;
}