2015-04-22 22 views
5

NetBeans 8 Hata Ayıklayıcı Değişkeni penceresinde bir Değer sütunu vardır. Sütunun anlamı, ilkel türler ve Dizeler ve Diziler için oldukça açıklayıcıdır, ancak Nesneler için, sütun bir "#" karakteri ve ardından (genellikle 4 haneli) bir sayı görüntüler. Değer, nesnenin kimliğiyle ilişkilidir, çünkü aynı nesneyi referans alan çoklu değişkenler aynı sayıya sahiptir ve art arda inşa edilen nesneler sıralı sayılara sahiptir. Sayı object.hashCode() değil. Gösterilen sayıyla ilgili daha fazla şey söyleyen var mı? Özellikle, bu sayıya hashCode() öğesine benzer bir nesnenin yöntemi veya özelliği olarak erişilip girilmeyeceğini merak ediyorum. Değilse, o zaman programlı olarak bu sayıya erişmenin bir yolu var mı?NetBeans Debugger Değişken penceresinde bir nesnenin Değer sütununun anlamı nedir?

Sütunun anlamındaki açıklamam, "Nesne Satırları" başlıklı https://ui.netbeans.org/docs/hi/debugger3.4/variables/index.html#specific'un son bölümüne karşılık gelir. "Nesne satırları, sınıf örneklerine başvuruları göstermek için kullanılır. Her bir referans, bir sınıf örneğinin sayısına (sanal makinedeki bazı örneklerin tablosundan) sahip olduğu düşünülebilir, bu nedenle bu sayı değer sütununda gösterilir (referans için "#" ile önekli. "

Makalenin yalnızca "Sanal Makinedeki bazı örnek tabloları" olarak adlandırdığı şeyin daha iyi bir açıklamasını yapmaya çalışıyorum.

Teşekkür

cevap

0

Sana ayıklayıcı eklentisi oluştururken sürece, bu sayıyı erişmek için bir yol yoktur sanmıyorum. Netbeans, hata ayıklama oturumu sırasında karşılaştığı her yeni nesneye yeni bir numara atar. "Nesne yeni" kontrol muhtemelen doğrudan kimlik (==) dayalı ve Object.hashCode()/System.identityHashCode() üzerinde değil.

"Sanal makinedeki bazı örnek tablolarını" tam anlamıyla alabilirsiniz. JVM'de açık tablolar bulunmasa bile, yine de bu tür bir listeyi yığın dökümünden (HPROF) alabilirsiniz. OQL (Nesne Sorgu Dili), bu tür verilere SQL benzeri erişim sağlar. Örneğin:

select f.field1 from my.package.MyClass f where f.field2 = 123 

arada ben bunun yerine #number ait toString() görüntülemek için bir yol arıyoruz bu soruya bitti - Ben zorunda kaldığını almak için değişken tablo başlığını sağ tıklayın ve yeni sütun "Dize değerini seçin ". Alternatif yol, "Araçlar/Option/Java/Java Hata Ayıklayıcı/Değişken formatları"

'da Değişken biçimlendiriciyi eklemektir.