Java 为什么在main方法中创建Err对象不需要声明new?

Java 为什么在main方法中创建Err对象不需要声明new?,java,class,object,new-operator,Java,Class,Object,New Operator,这是我的两个类Err和ErrorDemo class Err { String msg; int severity; public Err(String message,int severe) { msg=message; severity=severe; } } public class ErrorDemo { String msgs[]={ "OutPut Error", "Inp

这是我的两个类Err和ErrorDemo

class Err {
    String msg;
    int severity;
    public Err(String message,int severe) {
        msg=message;
        severity=severe;
    }
}   

public class ErrorDemo {
    String msgs[]={
        "OutPut Error",
        "Input Error",
        "Disk Full",
        "Index Out of Bounds"
    };
    int howBad[]={3,3,2,4};
    //return the error message 
    public Err getErrorMsg(int index) {
        if(index>=0&index<msgs.length) {
            return new Err(msgs[index],howBad[index]);
        } else {
            return new Err("Invalid Error Code",0);
        }
    }
}

我的问题是在Driver类中,我们创建了一个新的ErrorDemo对象,然而,erre;对象不是作为驱动程序中的新对象创建的,而是在ErrorDemo类中创建的。我不明白这里发生了什么,有人能解释一下吗?

是的,问题是我对这个样式有点反感,我重新格式化了它,使它更具可读性:)

公共类错误演示{
字符串msgs[]={
“输出错误”,
“输入错误”,
“磁盘已满”,
“索引超出范围”
};
int howBad[]={3,3,2,4};
公共错误getErrorMsg(整数索引){
错误测试=新错误(msgs[索引]、howBad[索引]);
Err invalid=新错误(“无效错误代码”,0);

如果(index>=0&index
erre
,e是一个引用,而不是对象
Err.getErrorMsg(2)
创建一个
Err
的新实例,并将其返回到
ErrorDemo
对象。如果您想喝咖啡,您可以自己做,也可以让别人帮您做。这里也一样。驱动程序可以创建一个新的Err,也可以让另一个对象ErrDemo创建它。如果驱动程序被删除,这个程序会是什么样子ID创建新对象?@ ELI方法GETError Msg()已为您创建对象并将其返回到主()方法中的引用E。这是在主()中不使用新的原因。这是一个答案吗?如果是,请考虑指出问题是什么,并按照这样的准则对问题进行格式化。
public class Driver {
    public static void main(String[]args) {
        ErrorDemo err=new ErrorDemo();
        Err e;
        e=err.getErrorMsg(2);
        System.out.println(e.msg+" Severity "+e.severity);
        e=err.getErrorMsg(19);
        System.out.println(e.msg+" Severity "+e.severity);
    }
}
public class ErrorDemo {
    String msgs[]= {
        "OutPut Error",
        "Input Error",
        "Disk Full",
        "Index Out of Bounds"
    };
    int howBad[]={3,3,2,4};
    public Err getErrorMsg(int index) {
        Err test=new Err(msgs[index],howBad[index]);
        Err invalid=new Err("Invalid Error Code",0);
        if(index>=0&index<msgs.length) {
            return test;
        } else {
            return invalid;
        }
    }
}