tag:blogger.com,1999:blog-694855878384792308.post5454136973066983227..comments2024-03-21T06:26:49.387-07:00Comments on Java67: Java Enum with Constructor Examplejavin paulhttp://www.blogger.com/profile/15028902221295732276noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-694855878384792308.post-43898988144092890662018-10-12T10:58:16.591-07:002018-10-12T10:58:16.591-07:00Please check https://stackoverflow.com/questions/7...Please check https://stackoverflow.com/questions/7747948/why-can-a-enum-have-a-package-private-constructor. It answers your questionAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-694855878384792308.post-62251049430198701822017-02-19T11:26:01.352-08:002017-02-19T11:26:01.352-08:00Hi,
“Enum constructor can not be protected or pub...Hi,<br /><br />“Enum constructor can not be protected or public, it can either have private or default modifier only.”<br /><br />I am confused by reading above line?? <br /><br />It is true we can’t declare enum constructor with public and protected modifier compiler gives you error.<br /><br />But as per line say we can declare constructor with “default” and “private” modifier.<br />Means that enum constructor can have default modifier and we can do as below<br /><br />enum Color {<br /> RED.GREEN,BLUE;<br /><br /> Color() {<br /> <br /> }<br /><br /> public static void main(String[] args) {<br /> Color c = new Color(); <br /> }<br /><br />}<br /><br /> In the main method below line throws compile time error.<br /> Color c = new Color(); <- Color enum constructor is default compiler should allow this but isn’t.<br /><br />How compiler restricting this??<br /> <br />So that i have check the differences of below two enum .class file and no single difference I found. <br />Mean by default enum constructor are “private” If we don’t specify modifier.<br /> (I have done this because no way to find constructor modifier using reflection api or analysing .class syntax for modifier)<br /><br /><br />enum Color {<br /> ;<br /> Color() {<br /> <br /> }<br />}<br /><br />enum Color {<br /> ;<br /> private Color() {<br /> <br /> }<br />}<br /><br /><br />If we check the difference of below two java .class file code we will get the difference.<br />class Test {<br /> Test() {<br /> <br /> }<br />}<br /><br />class Test {<br /> private Test() {<br /> <br /> }<br />}<br /><br />Mean if we don’t specify the modifier for enum constructor by default compiler is specify “private” so there is no default modifier concept for enum.<br />Does my assumption is correct ??<br />Shramikhttps://www.blogger.com/profile/04253003930687345274noreply@blogger.com