Я получаю ошибку getInstance () при попытке создать синглтон - PullRequest
0 голосов
/ 07 ноября 2019

Я знаю, что в Интернете много всего, и я искал последние два часа, пытаясь исправить свой код.

Я создаю неизменный класс под названием Автомобиль. Я видел много видео и читал статьи в Интернете.

Даже мои заметки из колледжа говорят о создании класса Singleton при создании класса Immutable (мои заметки, как обычно, мусор).

В любом случае в приведенном ниже коде есть все, что я видел в видеои читать в статьях единственная разница во всем, что я смотрел и читал, это то, что их объекты не имели других переменных.

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() 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;}
}

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Чтобы сделать этот класс неизменным, удалите сеттеры. Это не должен быть синглтон.

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;}
}
1 голос
/ 07 ноября 2019

В вашем getInstance() вы вызываете конструктор, который не определен:

carSingleton = new Car();

Определите конструктор по умолчанию, чтобы исправить ошибку:

private Car() {
    // initialize final variables
}

или используйте какой-либо другой конструкторв getInstance ()

Ответ на часть EDIT:

Если тип (класс) неизменен, это означает, что вы не можете изменять его экземпляры после их создания. Единственное, что вам нужно сделать в своем задании, это удалить все методы set и сделать все атрибуты класса final.

Как вы сказали, ваши заметки вам совсем не помогут. Синглтон не должен использоваться для этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...