Java eNum Başlangıç Kılavuzu – Neden ve Ne için Enum kullanmalıyım? Java Numaralandırma Örnekleri
Yayınlanan: 2019-04-23 Numaralandırmalar, değiştirilemez değişkenler gibi constants
listeleridir. Final keyword
duydunuz mu? O gibi.
Bir tür sayısal veya metinsel veriyi temsil eden önceden tanımlanmış bir değerler listesine ihtiyacınız olduğunda, bir numaralandırma kullanmalısınız. Örneğin, bir satranç oyununda farklı taş türlerini bir numaralandırma olarak temsil edebilirsiniz:
1 2 3 4 5 6 7 8 |
enum ChessPiece { PAWN , ROOK , KNIGHT , BISHOP , QUEEN , KING ; } |
Bir değişken (özellikle bir yöntem parametresi) olası küçük bir dizi değerden yalnızca birini alabildiğinde her zaman enums kullanmalısınız. Örnekler, tür sabitleri (sözleşme durumu: “kalıcı”, “geçici”, “çırak”) veya bayraklar (“şimdi yürüt”, “yürütmeyi erteleyin”) gibi şeyler olabilir.
Tamsayılar (veya Dize kodları) yerine numaralandırmalar kullanırsanız, derleme zamanı denetimini artırır ve geçersiz sabitlerin geçmesine neden olan hataları önlersiniz ve hangi değerlerin kullanılmasının yasal olduğunu belgelersiniz.
Java Örneği:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName ; public CrunchifyEnumExample ( Company cName ) { this . cName = cName ; } public void companyDetails ( ) { switch ( cName ) { case EBAY : System . out . println ( "EBAY: Biggest Market Place in the World." ) ; break ; case PAYPAL : System . out . println ( "PAYPAL: Simplest way to manage Money." ) ; break ; case GOOGLE : case YAHOO : System . out . println ( "YAHOO: 1st Web 2.0 Company." ) ; break ; default : System . out . println ( "DEFAULT: Google - biggest search giant.. ATT - my carrier provider.." ) ; break ; } } public static void main ( String [ ] args ) { CrunchifyEnumExample ebay = new CrunchifyEnumExample ( Company . EBAY ) ; ebay . companyDetails ( ) ; CrunchifyEnumExample paypal = new CrunchifyEnumExample ( Company . PAYPAL ) ; paypal . companyDetails ( ) ; CrunchifyEnumExample google = new CrunchifyEnumExample ( Company . GOOGLE ) ; google . companyDetails ( ) ; CrunchifyEnumExample yahoo = new CrunchifyEnumExample ( Company . YAHOO ) ; yahoo . companyDetails ( ) ; CrunchifyEnumExample att = new CrunchifyEnumExample ( Company . ATT ) ; att . companyDetails ( ) ; } } |
Çıktı:
1 2 3 4 5 6 7 |
EBAY : Biggest Market Place in the World . PAYPAL : Simplest way to manage Money . YAHOO : 1st Web 2.0 Company . YAHOO : 1st Web 2.0 Company . DEFAULT : Google - biggest search giant . . ATT - my carrier provider . . Process finished with exit code 0 |
Java Enum ile ilgili bazı çok önemli noktalar:
1. Nokta
Tüm numaralandırmalar, java.lang.Enum
öğesini örtük olarak genişletir. Java çoklu kalıtımı desteklemediğinden, bir numaralandırma başka hiçbir şeyi genişletemez.
Nokta-2
Enum in Java are type-safe:
Enum'un kendi ad alanı vardır. Bu, enum'unuzun, örneğin aşağıdaki örnekte “Company” türünde olacağı ve Enum Constants'ta belirtilenden başka bir değer atayamayacağınız anlamına gelir.
1 2 3 4 5 6 |
public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName = Company . EBAY ; cName = 1 ; // Compilation Error |

Nokta-3
Oluşturma sırasında enum sabitlerinin değerlerini belirtebilirsiniz. MyEnum.values()
, MyEnum'un değerlerinin bir dizisini döndürür.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com . crunchify . tutorial ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY ( 30 ) , PAYPAL ( 10 ) , GOOGLE ( 15 ) , YAHOO ( 20 ) , ATT ( 25 ) ; private int value ; private Company ( int value ) { this . value = value ; } } public static void main ( String [ ] args ) { for ( Company cName : Company . values ( ) ) { System . out . println ( "Company Value: " + cName . value + " - Company Name: " + cName ) ; } } } |
Çıktı:
1 2 3 4 5 |
Company Value : 30 - Company Name : EBAY Company Value : 10 - Company Name : PAYPAL Company Value : 15 - Company Name : GOOGLE Company Value : 20 - Company Name : YAHOO Company Value : 25 - Company Name : ATT |
Nokta-4
Enum sabitleri dolaylı olarak statik ve nihaidir ve oluşturulduktan sonra değiştirilemez.
Nokta-5
Enum, aşağıdakileri kullanarak güvenle karşılaştırılabilir:
- Switch-Case Bildirimi
- == Operatör
- .equals() yöntemiLütfen tam öğreticiyi izleyin.
1 2 3 4 |
Company eBay = Company . EBAY ; if ( eBay == Company . EBAY ) { log . info ( "enum in java can be compared using ==" ) ; } |
Nokta-6
Java'da Enum'un yapıcısı yalnızca private olabileceğinden ve Enums sabitleri yalnızca Enums'un içinde oluşturulabileceğinden, Java'da new operatörü kullanarak enums örneği oluşturamazsınız.
Nokta-7
Java'da Enum örneği, herhangi bir Enum sabiti kodda ilk kez çağrıldığında veya başvurulduğunda oluşturulur.
Nokta-8
Enum, bir türe atanan sabit değerlerin bir listesini belirtir.
Nokta-9
Bir numaralandırma, bir sınıfın dışında veya içinde bildirilebilir, ancak bir yöntemde DEĞİLDİR.
10. nokta
Bir sınıfın dışında bildirilen bir numaralandırma static, final , abstract, protected veya private olarak işaretlenmemelidir.
Nokta-11
Numaralandırmalar yapıcılar, yöntemler, değişkenler ve sabit sınıf gövdeleri içerebilir.
Nokta-12
enum sabitleri, int değişmezi 8'in enum yapıcısına iletildiği BIG(8) sözdizimini kullanarak enum yapıcısına bağımsız değişkenler gönderebilir.
13. nokta
enum yapıcılarının argümanları olabilir ve aşırı yüklenebilir.
Nokta-14
enum yapıcıları ASLA doğrudan kodda çağrılamaz. Bir numaralandırma başlatıldığında her zaman otomatik olarak çağrılırlar.
Nokta-15
Bir numaralandırma bildiriminin sonundaki noktalı virgül isteğe bağlıdır.
Bunlar yasaldır:
- enum Foo { BİR, İKİ, ÜÇ}
- enum Foo { BİR, İKİ, ÜÇ};
Başka bir basit Java eNUM Örneği:
Numaralandırmalar, sabitlerin listeleridir. Bir tür sayısal veya metinsel veriyi temsil eden önceden tanımlanmış bir değerler listesine ihtiyacınız olduğunda, bir numaralandırma kullanmalısınız.
Bir değişken (özellikle bir yöntem parametresi) olası küçük bir dizi değerden yalnızca birini alabildiğinde her zaman enums kullanmalısınız. Örnekler, tür sabitleri (sözleşme durumu: “kalıcı”, “geçici”, “çırak”) veya bayraklar (“şimdi yürüt”, “yürütmeyi erteleyin”) gibi şeyler olabilir.
Tamsayılar (veya Dize kodları) yerine numaralandırmalar kullanırsanız, derleme zamanı denetimini artırır ve geçersiz sabitlerin geçmesine neden olan hataları önlersiniz ve hangi değerlerin kullanılmasının yasal olduğunu belgelersiniz.
Arasında, numaralandırmaların aşırı kullanımı, yöntemlerinizin çok fazla şey yaptığı anlamına gelebilir (yaptıklarını değiştiren birkaç bayrak alan bir yöntem yerine, genellikle birkaç ayrı yönteme sahip olmak daha iyidir), ancak bayraklar veya tür kodları kullanmanız gerekiyorsa, numaralandırmalar gidilecek yoldur.
Bu çok basit Java eNum Örneği
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public enum CrunchifyEnumCompany { GOOGLE ( "G" ) , YAHOO ( "Y" ) , EBAY ( "E" ) , PAYPAL ( "P" ) ; private String companyLetter ; private CrunchifyEnumCompany ( String s ) { companyLetter = s ; } public String getCompanyLetter ( ) { return companyLetter ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com . crunchify . tutorials ; import com . crunchify . tutorials . CrunchifyEnumCompany ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public static void main ( String [ ] args ) { System . out . println ( "Get enum value for Comapny 'eBay': " + CrunchifyEnumCompany . EBAY . getCompanyLetter ( ) ) ; } } |
Çıktı:
1 |
Get enum value for Comapny 'eBay' : Value : E |