C'est un curieux couple de phrases.
C'est une erreur de compilation pour une déclaration d'enum de déclarer un finalisateur.
C'est assez clair. Je ne sais pas pourquoi ce serait le cas, mais les règles sont les règles. Cela semble également être appliqué par le fait que les enums dérivent de Enum
et les spécifications de l'API indiquent que Enum
a un final
finaliseur.
Une instance d'un type enum ne peut jamais être finalisée.
Le langage utilisé ici me semble ambigu. Est-ce qu'ils déclarent qu'aucune instance d'un type enum ne sera jamais finalisée ? Si oui, pourquoi "peut" ? Pourquoi ne pas simplement le dire ? Est-ce qu'ils nous rappellent simplement que la finalisation n'est pas garantie ? Quoi qu'il en soit, cela n'a pas d'importance.....
Object
's finalize
est définie pour ne rien faire ( 12.6 ). Enum
provient de Object
et les enums dérivent de Enum
. Enum
Le finalisateur de l'utilisateur n'est pas défini pour faire quoi que ce soit, et vous ne pouvez pas le surcharger, donc quand vous mettez tout ensemble la finalisation d'une instance d'enum n'a aucun effet.
Selon mon interprétation, les instances d'enum peuvent être récupérées (bien que, comme d'autres l'ont souligné, les circonstances qui permettent cela soient un peu inhabituelles), et comme leur finalize
est définie pour ne rien faire, que la méthode finalize
est jamais appelée est un point discutable.