put questions to
The little partner said that enumeration was used in an interface definition, which was deeply disliked by others and difficult to expand.
Why is it rejected? Let’s take a look at the suggestions on enumerations in Alibaba’s development manual
It can be seen from the manual that the Alibaba development manual supports the definition and use of enumeration, but why should the return value be opposed?
Look at what the author Gu Quan said
Due to the upgrade, the enumeration classes of both sides are different, and an exception occurs during interface resolution and class deserialization. Any element appearing in Java will have thinking and logic behind it from the perspective of gosling (although it is not absolutely perfect, the top-level abstraction of Java is already genius), such as interfaces, abstract classes, annotations, and enumerations mentioned in this article.
Enumeration is good, type safe, clear and direct. You can also use the equal sign to judge, or it can be used in switch.
Its disadvantage is also obvious, that is, it can not be expanded. However, why is the difference between return values and parameters? If they are incompatible, there are problems with both. How can parameters be enumerated. At that time, if the parameters can not be used, then enumeration is almost useless.
After all, the parameter output is determined locally. If you have it locally, there will be no problem with forward compatibility. However, if it is returned by the interface, it will be disgusting, because the parsed enumeration value may not be available locally. At this time, a serialization exception will be thrown.
For example, your local enumeration class has a weather enum: sunny, rain and cloudy. If the method of calculating mood based on weather is guess (weatherenum XX), you can pass in these three values. Return value: weather guess (parameter). After the opposite operation, a snow is returned. There is no such value in the local enumeration. It’s silly.
However, another netizen Brian’s answer is also very easy to understand
Enumeration is to list all the known. As a provider of two-party / three-party libraries, you use whatever I support. This is safe. After the library version is upgraded, I support more. You won’t use it if you don’t know. Anyway, you can’t pass the parameters I don’t support to me, so enumeration is a security guarantee as input. But as a return value, the opposite is true.
I’ll tell you first that these can be, and then you stipulate that these can be, but nothing else.
But I has the final say, not you, so your rule is not. If you don’t read every word in the manual (if it’s fake), you don’t know what the upgraded API will return, and the possibility of throwing exceptions is 100%.
Recent hot article recommendations:
Feel good, don’t forget to like + forward!