Neden Java geçici değişkenler var mı?
Neden Java vargeçicideğişkenler?
CEVAP
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ı.
Java 5'te neden uçucu değil't sen...
Neden yerel değişkenler Java başlatılm...
Neden ThreadLocal değişkenler statik J...
Neden char[] şifreler için Dize Java t...
Neden belirli Unicode karakterler içer...