SORU
26 Mayıs 2009, Salı


Neden Java geçici değişkenler var mı?

Neden Java vargeçicideğişkenler?

CEVAP
26 Mayıs 2009, Salı


Java transient anahtar alan seri gerektiğini belirtmek için kullanılır.

Java Language Specification, Java SE 7 Edition, Section 8.3.1.3. transient Fields: gelen

Değişkenler transient işaretli olabilir bir parçası olmadıklarını göstermek bir nesnenin kalıcı bir devlet.

Örneğin, diğer alanlardan elde edilir, ve sadece program aracılığıyla, devlet serileştirme ile kalıcı yerine yapılması gereken alanlar olabilir.

Burada, bir resim ve bir küçük resim türetilen içeren GalleryImage sınıf:

class GalleryImage implements Serializable
{
    private Image image;
    private transient Image thumbnailImage;

    private void generateThumbnail()
    {
        // Generate thumbnail.
    }

    private void readObject(ObjectInputStream inputStream)
            throws IOException, ClassNotFoundException
    {
        inputStream.defaultReadObject();
        generateThumbnail();
    }    
}

Bu örnekte, thumbnailImage generateThumbnail yöntemini çağırarak oluşturulan küçük bir resim.

thumbnailImage alan transient image orijinal seri yerine özgün resim ve küçük resim hem de kalıcı olarak işaretlenir. Bu daha az depolama sıralanmış nesne kaydetmek için gerekli olacağı anlamına gelir. (Tabii ki, bu olabilir veya uygun sistem gereksinimlerine -- bu sadece bir örnek olabilir.)

Seri kaldırma sırasında, readObject Bu yöntem herhangi bir işlem nesnenin durumunu hangi seri oluştu durumuna geri yüklemek için gerekli gerçekleştirmek için denir. Burada, küçük oluşturulmalıdır, readObject yöntem küçük generateThumbnail yöntemini çağırarak oluşturulur, böylece geçersiz kılınır.

Ek bilgi Discover the secrets of the Java Serialization API makale (aslında mevcut Güneş Geliştirici Ağı) bir bölümü olan kullanımı anlatılır ve hediyeler bir senaryo nerede transient anahtar kullanılır önlemek için seri hale getirme, belirli alanları.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • captainpuppys2000

    captainpuppy

    20 HAZİRAN 2013
  • CMTelly

    CMTelly

    2 Mayıs 2007
  • Commander Chalkboard

    Commander Ch

    20 Ocak 2014