Java 我发现在尝试创建单例时发生getInstance()错误

Java 我发现在尝试创建单例时发生getInstance()错误,java,singleton,Java,Singleton,我知道网上有很多,在过去的两个小时里我一直在寻找我的代码 我正在制作一个名为Car的不可变类,我在网上看过很多视频和文章 即使是我的大学笔记也谈到了在使一个类不可变时创建一个单例类(我的笔记和往常一样都是垃圾) 不管怎样,下面的代码包含了我在视频和文章中看到的所有内容。唯一的区别是我所看到和阅读的所有内容都是它们的对象没有其他变量 public final class Car{ private static Car carSingleton = null; private fin

我知道网上有很多,在过去的两个小时里我一直在寻找我的代码

我正在制作一个名为Car的不可变类,我在网上看过很多视频和文章

即使是我的大学笔记也谈到了在使一个类
不可变时创建一个单例类(我的笔记和往常一样都是垃圾)

不管怎样,下面的代码包含了我在视频和文章中看到的所有内容。唯一的区别是我所看到和阅读的所有内容都是它们的对象没有其他变量

public final class Car{
    private static Car carSingleton = null;
    private final String owner;
    private final String reg;
    private final String make;
    private final int kilometres;
    private final double price;



    private Car() {}    


    public static Car getInstance()() {
        if(carSingleton == null) {
            carSingleton = new Car();
        }   
        return carSingleton;
    }



    public String getOwner(){return owner;}
    public String getReg(){return reg;}
    public String getMake(){return make;}
    public int getKilometres(){return kilometres;}
    public double getPrice(){return price;}



}
我发现
getInstance()
constructor Car()中有一个错误未定义

编辑: 这是我得到的实际问题

问题1 下面给出的是一个可变的汽车类。重新编写它,使其变得不可变,并编写一个简单的测试程序

class Car{
    private String owner;
    private String reg;
    private String make;
    private int kilometres;
    private double price;
    public Car(String owner, String reg, String make, int kilometres, double price){
            this.owner = owner; this.reg = reg;this.make = make; 
            this.kilometres = kilometres; this.price = price; 
    }
    public String owner(){return owner;}
    public String reg(){return reg;}
    public String make(){return make;}
    public intkilometres(){return kilometres;}
    public double price(){return price;}
    public void setPrice(double p){price = p;}
    public void setOwner(String ow){owner = ow;}
    public void setKil(int k){kilometres = k;}
    public void setMake(String m){make = m;}
}
getInstance()
中,您正在调用未定义的构造函数:

carSingleton = new Car();
定义默认构造函数以修复错误:

private Car() {
    // initialize final variables
}
或者在getInstance()中使用其他构造函数

回答编辑部分:

如果一个类型(类)是不可变的,这只意味着一旦创建了实例,就不能更改它的实例。在作业中,您需要做的唯一一件事是删除所有的set方法,并将所有类属性设置为final

就像你说的,你的笔记对你一点帮助都没有。Singleton不应用于此目的

getInstance()
中,您正在调用一个未定义的构造函数:

carSingleton = new Car();
定义默认构造函数以修复错误:

private Car() {
    // initialize final variables
}
或者在getInstance()中使用其他构造函数

回答编辑部分:

如果一个类型(类)是不可变的,这只意味着一旦创建了实例,就不能更改它的实例。在作业中,您需要做的唯一一件事是删除所有的set方法,并将所有类属性设置为final


就像你说的,你的笔记对你一点帮助都没有。Singleton不应用于此目的

要使该类不可变,请删除setter。它不应该是单身

class Car{
    private String owner;
    private String reg;
    private String make;
    private int kilometres;
    private double price;
    public Car(String owner, String reg, String make, int kilometres, double price){
            this.owner = owner; this.reg = reg;this.make = make; 
            this.kilometres = kilometres; this.price = price; 
    }
    public String getOwner(){return owner;}
    public String getReg(){return reg;}
    public String getMake(){return make;}
    public getKilometres(){return kilometres;}
    public double getPrice(){return price;}
}

要使该类不可变,请删除setter。它不应该是单身

class Car{
    private String owner;
    private String reg;
    private String make;
    private int kilometres;
    private double price;
    public Car(String owner, String reg, String make, int kilometres, double price){
            this.owner = owner; this.reg = reg;this.make = make; 
            this.kilometres = kilometres; this.price = price; 
    }
    public String getOwner(){return owner;}
    public String getReg(){return reg;}
    public String getMake(){return make;}
    public getKilometres(){return kilometres;}
    public double getPrice(){return price;}
}

getInstancen()
返回的Car实例应该有什么“所有者”?什么是“价格”?简而言之,对这样的类使用单例是没有意义的,因为没有零参数构造函数,所以会出现这种异常。这一定是在编译时发生的?其他值得注意的是,
getInstancen()
的拼写稍有错误。如果是singlton,则car的构造函数应该是私有的。要解决此问题,请调用汽车构造函数传递一些值,它应该可以正常工作(ish)。这是否回答了您的问题?同样适用:那么为什么它们是最终的呢?为什么只有一辆车?通过
getInstancen()
返回的汽车实例应该有什么“所有者”?什么是“价格”?简而言之,对这样的类使用单例是没有意义的,因为没有零参数构造函数,所以会出现这种异常。这一定是在编译时发生的?其他值得注意的是,
getInstancen()
的拼写稍有错误。如果是singlton,则car的构造函数应该是私有的。要解决此问题,请调用汽车构造函数传递一些值,它应该可以正常工作(ish)。这是否回答了您的问题?同样适用:那么为什么它们是最终的呢?为什么只有一辆车?