BilgisayarlarProgramlama

Java Jenerik: tanımı ve yöntemleri

Java dili görünümü ile başlayan kuşkusuz işlevselliği olumlu anları getirdi değişikliklerin, bir sürü uğramıştır. Bu önemli değişikliklerden biri Java Jenerik veya genellemelerin giriştir. Bu işlev, yalnızca dil daha esnek ve çok yönlü, aynı zamanda veri türlerini getirme açısından çok daha güvenli yapmaz.

Aslında Java jenerik kodunda jenerik tanıtımı öncesinde tip referans Nesne açısından değil, oluşabileceğini olmasıdır. Bu tür bağlantılar, herhangi bir nesne atanabilir. Sonuçta, Java sınıfları örtülü Nesne sınıf varis olurlar. Ancak, bu yaklaşım, hedef türüne nesnesinden bir nesnenin görünen dönüşümde güvenlik türleriyle ilgili birçok hataların potansiyel bir kaynaktır. genellemeler kullanırken tüm yayınları hatalar için bile potansiyelini ortadan kaldırarak, örtük ve otomatik olarak yapılmaktadır.

Java Jenerik: tanımı ve örnek

Bize aşağıdaki şekilde düzenli sınıflara genelleştirme uygulamanın basit bir örnek ele alalım. Ve sonra bütün inceliklerini ve Java Generic'in nüansları ayrıntılı bir incelemeye devam edin.

sınıf bildirimi Çifti meydana geldiği yolda dikkat edin. Hemen sınıf adı sonra, T harfi belirtilmedikçe açık açılı parantez, belirli bir türü tarafından değiştirilmek üzere, bu sınıfın bir örneği oluşturma sürecinde olan bir dolgu maddesi tür. aşağıdaki gibi görünüyor: Çifti nesne = new Çifti (). Bunun yerine T, T, V veya E. kullanmak, bir kural olarak, herhangi bir harf belirtebilirsiniz ancak unutulmamalıdır

Not: boş bırakılabilir yapıcı referans açı parantezleri bildirirken hedef türünü belirten, Java sekizinci versiyonu ile başlanarak hazırlandı. Yukarıdaki örnek olarak yeniden olabilir Yani: Pair nesne = new Çifti <> ().

Bir sınıf alanları, linkler, şu mektubu kullanabilirsiniz yöntemlerle döndürülen nesnelerin belirli türleri yerine vücudundaki sonra, bu şekilde beyan zaman. T yana sınıf nesnesi, bu durumda, birinci ve ikinci alanların tamsayı olacaktır özel bir tip ile değiştirilir oluştururken.

argümanları ve firstItem secondItem mantığı sonra, aynı zamanda, tip tamsayı veya alt sınıfına ait olmalıdır uygun kurucu anılacaktır. Bir nesneyi oluştururken belirtilenlerin farklı bir veri türü iletmek çalışırsanız, derleyici bu hatayı izin vermez. Bu durumda, bir amacı gibi olacaktır argümanlar yapıcı aşağıdaki gibidir: Pair nesne = yeni bir çift <> (yeni tamsayı (1), yeni bir tamsayı (2)). Aynı argümanlar ve yöntemlere setFirst setSecond için de geçerlidir. Ve muhtemelen, yöntemler GetFirst getSecond tahmin ettik ve tip tamsayı değeri dönecektir olarak.

Birkaç parametreler sınıf türleri ile Genelleştirilmiş

genel sınıfları ayrıca bir virgül ile açılı parantez içinde ayarlanır tip birden çok parametre ilan edebilir. Çifti sınıfı aşağıda sunulmuştur bir durumda tarafından yeniden tasarlandı.

Gördüğünüz gibi size köşeli ayraç içinde bu sınıfın bir örneğini oluştururken, parametre olarak tiplerinin aynı sayıda belirtmelidir. Eğer bir harita olarak veri yapısı bu tür aşina değilseniz, bunu tam olarak aynı ilkeyi kullandığını görebilirsiniz. değerin türünü - Orada, ilk argüman anahtarın türünü ve ikinci belirtir. Iletilen tipleri bir amacı, bağımsız değişkenler çakışabilir zaman not edilmelidir. Örneğin, aşağıdaki reklam Çifti sınıf örneği kesinlikle doğrudur: Çifti obj.

genellemelerin bazı özellikleri

ileriye gitmeden önce, Java derleyici sınıf Çiftinin farklı sürümlerini yaratmaz unutulmamalıdır. Aslında, genel bir tip tüm bilgileri derleme sürecinde silinir. Bunun yerine, Çifti sınıfının özel bir versiyonunu yaratarak, uygun türde getirmek. Ancak, programda yine sınıfın sadece genel bir sürümü var. Bu süreç, Java Jenerik temizleme tipinde denir.

önemli bir noktayı unutmayın. Aynı java jenerik sınıfın farklı sürümleri linkler tek ve aynı nesneye işaret edemez. Çifti obj1 ve Çifti <Çift> obj2: Yani, iki bağlantıları varsayalım. Sonuç olarak, uygun olarak obj1 = obj2 bir hata. Her iki değişken Çifti Çeşidi olmasına rağmen, nesnelerin oldukları başvurmak için farklıdır. Bu Java Jenerik güvenlik türleri başlıca örneklerinden biridir.

Jenerik sınıflar ilişkin kısıtlamalar

Bu genellemeler türlerini başvurmak için sadece uygulanabilir olduğunu bilmek önemlidir, bu parametreleri bir sınıf türü olmalıdır jenerik sınıf java argüman geçmektir. Çift veya uzun örn gibi bu basit türleri, transfer edilemez. Başka bir deyişle, aşağıdaki satırı Çifti sınıf bildirimi izin verilmez: Çifti obj. Her bir basit tür için karşılık gelen bir Java sarıcı sınıfı vardır Ancak, bu sınırlama, ciddi bir sorun değildir. Açıkçası, sınıf Çifti bir tamsayı ve Boole değeri avtoupakovka her şeyi sizin için yapar saklanması istiyorsanız: Çifti nesne = new Çifti <> (25, true).

Bir diğer ciddi sınırlama parametresi türü bir örneğini oluşturmak için yetersizliğidir. Örneğin, aşağıdaki çizgi bir derleme hataya neden olur: T birinci = yeni T (). bir argüman tam bir sınıf veya soyut, hatta arayüzü geçti olmadığını önceden bilmiyorum çünkü bu, aşikardır. Aynı dizi oluşturulurken için de geçerli.

sınırlı türleri

o genel sınıf java argüman olarak geçirilebilir türleri listesini sınırlamak için gerektiğinde Oldukça sık durumlar vardır. bizim sınıf Pair biz onlara başka matematiksel işlemler için sadece sayısal değerleri saklanması istediğinizi varsayalım. Bunu yapmak için parametre türü üst sınırını tanımlamak gerekir. Bu köşeli ayraç içinde geçirilen tüm argümanları kalıtsal bir üst sınıf reklamların vasıtasıyla gerçekleştirilmiştir. Aşağıdaki gibi görünecektir: sınıf Çifti . Bu şekilde, derleyici bulur parametre, T ikame edilmiş ya da sayısı sınıf veya alt sınıflarından birinin edilebilir yerine.

Bu yaygın bir resepsiyon olduğunu. Bu tür sınırlamalar, genellikle, tek ve aynı sınıfta uyumluluk tür parametreleri elde etmek için kullanılır. Sınıfımız Pair örneğe düşünün: class Çifti . Burada tipi T keyfi olabilir derleyici anlatmak ve V tipi T tipi veya alt sınıflarından biri ya olmalıdır.

"Alt" sınırlama aynı yoldur, ama bunun yerine kelimenin kelime süper büyü uzanır. Yani sınıflandırılır sınıf Çifti yerine T ArrayList ya da devralır herhangi bir sınıf veya arayüzü veya ikame edilebileceğini söylüyor.

Jenerik Java yöntemleri ve kurucular

Java'da, genellemeler de yöntemleri yalnızca sınıflara değil uygulandı, ancak yapılabilir. Örneğin, bir jenerik yöntem normal bir sınıfta bildirilebilir.

Yukarıdaki şekilde de görüldüğü gibi, reklam genelleştirilmiş yöntem büyük bir olay olduğunu. bir yöntemin dönüş tipi açılı ayraç koymak ve onları tip parametrelerini belirlemek için önce yeter.

her şey yapıcı benzer yapılırsa:

Bu durumda Açı parantez o geri dönüşü değeri vardır çünkü, tasarımcının adından önce koydu. Her iki programın sonucu olacaktır:

tamsayı

sicim

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 tr.delachieve.com. Theme powered by WordPress.