How to implement a dynamic temperature conversion method based on given enums?
The java.util.concurrent.TimeUnit enum class provides both a generic conversion method and specific methods for each modeled unit, e.g., toHours. You could do something similar and still provide the third-party TemperatureConvert.convert method if you want.

Here's the implementation of SECONDS:

SECONDS {
    public long toNanos(long d)   { return x(d, C3/C0, MAX/(C3/C0)); }
    public long toMicros(long d)  { return x(d, C3/C1, MAX/(C3/C1)); }
    ...
    public long toHours(long d)   { return d/(C5/C3); }
    ...
    public long convert(long d, TimeUnit u) { return u.toSeconds(d); }
},


Note that the author went for efficiency by precalculating many of the conversion constants. I wouldn't bother with that to start as it's probably premature for your needs. Your conversion methods should start simply:

CELCIUS {
    public double toFahrenheit(long t) {
        return t * 9 / 5 + 32;
    }
    public double toKelven(long t) {
        return t + 273;
    }
    public double convert(double t, TemperatureUnit u) {
        return u.toCelcius(v);
    }
}


Also, all of the conversion methods are stubs that throw an exception rather than abstract. Why? I don't know. If these weren't enums and could be extended, stub methods that fail only when called are handy for allowing optional operations--think Collection.remove(Object) which throws UnsupportedOperationException if not implemented by the concrete container.