方法可以返回包含类类型在内的任何类型的数据.例如,如下所示的用于报告错误的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()中用于显示出错消息和严重级别代码.
当方法返回对象时,对象将一直存在,直至没有对他的引用为止,这时对象就会被回收.因此,对象不会因为创建他的方法结束而被销毁.