返回对象

方法可以返回包含类类型在内的任何类型的数据.例如,如下所示的用于报告错误的ErrorMsg类,他的getErrorMsg()方法就返回一个String对象,该对象包含根据传递的储物代码得到的出错描述.
public class test2
{
    // @param args
    public static void main(String args[])
    {
     ErrorMsg err = new ErrorMsg();
     
     System.out.println(err.getErrorMsg(2));
     System.out.println(err.getErrorMsg(99));
    }
}
class ErrorMsg
{
    String msgs[] = {
            "Output Error",
            "Input Error",
            "Disk Full",
            "Index Out-Of-Bounds"
    };
    
    String getErrorMsg(int i)
    {
        if(i>=0 && i < msgs.length)
            return msgs[i];
        else
            return "Invalid Error Code";
    }
}
输出:
Disk Full
Invalid Error Code
当然,也可以返回自己创建的类的对象.例如,下面是前面创建两个出错类的程序的改版.两个出错类一个名为Err,他把出错消息和严重级别代码封装在一起.另一个名为ErrorInfo,他定义了一个名为getErrorInfo()的方法,用来返回一个Err对象.
public class test2
{
    // @param args
    public static void main(String args[])
    {
     ErrorMsg err = new ErrorMsg();
     Err e;
     
     e = err.getErrorMsg(2);
     System.out.println(e.msg+" severity :  "+e.severity);
     e = err.getErrorMsg(99);
     System.out.println(e.msg+" severity :  "+e.severity);
    }
}
class Err
{
    String msg;
    int severity;
    
    Err(String m,int s)
    {
        msg = m;
        severity = s;
    }
}
class ErrorMsg
{
    String msgs[] = {
            "Output Error",
            "Input Error",
            "Disk Full",
            "Index Out-Of-Bounds"
    };
    
    int howbad[] = {3,3,2,4};
    
    Err getErrorMsg(int i)
    {
        if(i>=0 && i < msgs.length)
            return new Err(msgs[i],howbad[i]);
        else
            return new Err("Invalid Error  Code",0);
    }
}
输出:
Disk Full severity : 2
Invalid Error Code severity : 0
每次调用getErrorInfo()都会创建一个新的Err对象,并将对该对象的引用返回给调用例程.然后该对象在main()中用于显示出错消息和严重级别代码.
当方法返回对象时,对象将一直存在,直至没有对他的引用为止,这时对象就会被回收.因此,对象不会因为创建他的方法结束而被销毁.