KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
As you may know, some people are declaring singletons with an Enum of 1 instance, because the JVM guarantees that there will always be a single instance with no concurrency problems to handle... Thus what about an Enum with multiple instances? Can we say something like an Enum is a kind of ordered set of singletons sharing a common interface? Why? public enum EnumPriceType { WITH_TAXES { @Override public float getPrice(float input) { return input*1.20f; } public String getFormattedPrice(float input) { return input*1.20f + " €"; } }, WITHOUT_TAXES { @Override public float getPrice(float input) { return input; } }, ; public abstract float getPrice(float input); public static void main(String[] args) { WITH_TAXES.getFormattedPrice(33f); } } In this code why this doesn't work: WITH_TAXES.getFormattedPrice(33f); What is the interest of declaring a public method if it can't be called without passing through the common interface? I guess this is why i don't see any syntax to be able to declare an interface just for one of the instances of an Enum. Edit: It seems that enum instances are a special kind of anonymous classes. Thus i understand why you can't call that method. My question is kinda related to: why can't an anonymous class implement an interface (in addition to the interface it may already implement!) I totally understand why we CANT do that: Vehicle veh = new Vehicle() { public String getName() { return "toto"; } }; veh.getName(); (getName here is not an override) Why i don't understand is why we can't do that with anonymous classes: Runnable veh = new Vehicle() implements Runnable { @Override public void run() {
Tags (comma-separated)
Save Edits
Cancel