Help with cloning method
<p>I'm almost done with this project which involves converting between Celsius, Fahrenheit, and Kelvin and the last thing I need is to figure out the cloning method. The task is <strong>"clone, which takes no formal parameters and returns a reference to a newly created Temperature object that has the same value and scale as the object of which it is a clone "</strong>. My code compiles, but when run in the client program, i recieve an error of <strong>java.lang.StackOverflowError
    at Temperature.clone(Temperature.java:134)</strong></p>

<pre><code>public class Temperature {
    private double value;
    private String scale;

    public Temperature() { // default constructor 
        this.value = 0;
        this.scale = "C";
    }

    public Temperature(double value, String scale) {
        this.value = value;
        this.scale = scale;
    }

    public double getValue() {
        return this.value;
    }

    public String getScale() {
        return this.scale;
    }

    public double getCelsius() {

        if (scale.equalsIgnoreCase("C")) {
            return this.value;
        } else if (scale.equalsIgnoreCase("F")) {
            double faren = ((this.value - 32) * (5 / 9));
            return faren;
        } else {
            double kelvin = (this.value - 273.15);
            return kelvin;
        }
    } // end getCelcius

    public double getFaren() {
        if (scale.equalsIgnoreCase("F")) {
            return this.value;
        } else if (scale.equalsIgnoreCase("C")) {
            double celsius = ((this.value * 1.8) + 32);
            return celsius;
        } else {
            double kelvin = ((this.value * 1.8) - 459.67);
            return kelvin;
        }
    } // ene getFaren

    public double getKelvin() {
        if (scale.equalsIgnoreCase("K")) {
            return this.value;
        } else if (scale.equalsIgnoreCase("C")) {
            double celsius = (this.value + 273.15);
            return celsius;
        } else {
            double faren = ((this.value + 459.67) * (5 / 9));
            return faren;
        }
    } // end getKelvin

    public void setTemperature(Temperature t) {
        this.value = t.value;
    }

    public void setType(double degree, String measure) {
        this.value = degree;
        this.scale = measure;
    }

    public void setValue(double degree) {
        this.value = degree;
    }

    public void setScale(String measure) {
        this.scale = measure;
    }

    public double convertToCelsius() {
        this.scale = "C";
        return this.value = getCelsius();
    }

    public double convertToFaren() {
        this.scale = "F";
        return this.value = getFaren();
    }

    public double convertToKelvin() {
        this.scale = "K";
        return this.value = getKelvin();
    }

    public Temperature clone() {
        this.value = value;
        this.scale = scale;
        return clone();
    }
}
</code></pre>

<p>The cloning method is the last method, so any help would really be appreciated. I'm not sure where I'm going wrong! This is my first time using this website, so apologies for the formatting!</p>
