A " Heap Polution " seperti pada Jenis yang Tidak Dapat Diverifikasi (The Java ™ Tutorials> Mempelajari Bahasa Jawa> Generik (Diperbarui)) Mengapa disebut demikian?
Teknik Meta, yang memungkinkan untuk menunda pengaturan tipe yang dapat diandalkan untuk runtime.
A " Heap Polution " seperti pada Jenis yang Tidak Dapat Diverifikasi (The Java ™ Tutorials> Mempelajari Bahasa Jawa> Generik (Diperbarui)) Mengapa disebut demikian?
Saya telah melihat beberapa kali di posting situs ini yang mengutuk implementasi generik Java. Sekarang, saya dapat dengan jujur mengatakan bahwa saya tidak memiliki masalah dengan menggunakannya. Namun, saya belum mencoba membuat kelas generik sendiri. Jadi, apa masalah Anda dengan dukungan...
Akhir-akhir ini saya terbiasa "menutupi" koleksi Java dengan nama kelas yang ramah manusia. Beberapa contoh sederhana: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } Atau: // If you saw a
Saat meninjau beberapa kode, saya perhatikan kesempatan untuk mengubahnya menggunakan generik. Kode (dikaburkan) terlihat seperti: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Kode ini dapat...
Misalnya, saya memiliki permainan, yang memiliki beberapa alat untuk meningkatkan kemampuan Pemain: Tool.h class Tool{ public: std::string name; }; Dan beberapa alat: Pedang class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Shield.h class Shield :...
Sudah umum diterima bahwa generik Java gagal dalam beberapa hal penting. Kombinasi kartu liar dan batas menyebabkan beberapa kode serius tidak dapat dibaca. Namun, ketika saya melihat bahasa lain, saya benar-benar tidak bisa menemukan sistem tipe generik yang disukai oleh para programmer. Jika...
Mari kita asumsikan saya memiliki dua kelas yang terlihat seperti ini (blok kode pertama dan masalah umum terkait dengan C #): class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } Kelas-kelas ini tidak dapat diubah dengan cara apa pun (mereka...
Saya tampaknya memiliki kesalahpahaman tentang perbedaan antara <Foo>dan <? extends Foo>. Dari pemahaman saya, jika kita punya ArrayList<Foo> foos = new ArrayList<>(); Ini menunjukkan bahwa objek tipe Foodapat ditambahkan ke daftar array ini. Karena subclass dari Foojuga...
AFAIK, extendskelas dan implementsantarmuka orangtua kelas saya . Tapi saya mengalami situasi, di mana saya tidak bisa menggunakan implements SomeInterface. Ini adalah deklarasi tipe generik. Sebagai contoh: public interface CallsForGrow {...} public class GrowingArrayList <T implements...
Saya tinggal di lingkungan, tempat orang percaya: Java generics adalah fitur yang khusus digunakan untuk penulisan pustaka dan bukan untuk pengkodean yang sebenarnya. C ++ adalah bahasa pemrograman OO; templateadalah fitur opsional dan dapat dihindari Padahal, orang-orang ini sangat bergantung...
Saya tidak ingat kapan saya menulis kelas generik terakhir kali. Setiap kali saya pikir saya membutuhkannya setelah berpikir saya membuat kesimpulan saya tidak membutuhkannya. Jawaban kedua untuk pertanyaan ini membuat saya meminta klarifikasi (karena saya belum bisa berkomentar, saya membuat...
Dalam C # generics, kita dapat mendeklarasikan batasan untuk tipe parameter Tuntuk memiliki konstruktor default, dengan mengatakan where T : new(). Namun, tidak ada kendala lain seperti ini yang valid - new(string)misalnya, dll. Dari desain bahasa dan / atau perspektif implementasi, apa...
Misalkan saya memiliki hierarki kelas ini ... public abstract class Animal { public abstract void eat(); public abstract void talk(); } class Dog extends Animal { @Override public void eat() { } @Override public void talk() { } } class Cat extends Animal { @Override public void eat()...
Ini adalah pertanyaan dari perspektif internal kompiler. Saya tertarik pada obat generik, bukan template (C ++), jadi saya menandai pertanyaan dengan C #. Bukan Java, karena AFAIK generik dalam kedua bahasa berbeda dalam implementasinya. Ketika saya melihat bahasa tanpa generik, itu sangat mudah,...
Saya cukup yakin semua orang akrab dengan metode generik formulir: T DoSomething<T>(T item) Fungsi ini juga disebut parametrically polymorphic (PP), khususnya peringkat-1 PP. Katakanlah metode ini dapat direpresentasikan menggunakan objek fungsi dari bentuk: <T> : T ->...
Seperti yang ada saat ini, pertanyaan ini tidak cocok untuk format tanya jawab kami. Kami berharap jawaban didukung oleh fakta, referensi, atau keahlian, tetapi pertanyaan ini kemungkinan akan mengumpulkan debat, argumen, polling, atau diskusi panjang. Jika Anda merasa bahwa
Sesuai aturan nomor 4 dari Object Calisthenics oleh Jeff Bay (RTF) dalam The ThoughtWorks Anthology, direkomendasikan bahwa seseorang harus " Menggunakan koleksi kelas satu ". Aturan 4: Koleksi kelas satu Penerapan aturan ini sederhana: setiap kelas yang berisi koleksi tidak boleh mengandung...
Dalam bahasa berorientasi objek yang mendukung parameter tipe umum (juga dikenal sebagai templat kelas, dan polimorfisme parametrik, meskipun tentu saja setiap nama memiliki konotasi yang berbeda), sering kali mungkin untuk menentukan batasan tipe pada parameter tipe, sehingga diturunkan. dari tipe...
Dalam pertanyaan StackExchange yang berbeda, saya perhatikan seseorang menggunakan prototipe ini: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } Mengingat hanya ada satu jenis kendala ( SomeSpecificReferenceType), apa perbedaan dan keuntungan menulisnya...
Tipe IDE ( NetBeans ) saya memeriksa Collectionskode saya saat saya mengetik. Tetapi kemudian, mengapa saya harus melemparkan objek yang dikembalikan Object.clone()? Itu baik saja. Tidak ada salahnya tidak busuk. Tapi tetap saja, saya tidak mengerti. Apakah pengecekan tipe, tanpa casting, objek...