«generics» etiketlenmiş sorular

Güvenilir türün ayarını çalışma zamanına ertelemeye izin veren meta tekniği.


7
Java'nın jeneriklerinde yanlış olan nedir? [kapalı]
Java’nın jenerik ürününü uygulamasına son veren bu site yayınlarında birkaç kez gördüm. Şimdi, dürüstçe söyleyebilirim ki bunları kullanma konusunda herhangi bir sorun yaşamadım. Ancak, kendimi genel bir sınıf haline getirmedim. Peki, Java'nın genel desteği ile ilgili sorunlarınız nelerdir?
49 java  generics 

6
Java koleksiyonlarını anlamlı sınıf adlarıyla maskelemek için iyi veya kötü uygulama?
Son zamanlarda, insan dostu sınıf isimlerinde Java koleksiyonlarını "maskeleme" alışkanlığı oldum. Bazı basit örnekler: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } Veya: // If you saw a ArrayList<ArrayList<?>> being passed around in the code, would you // run away …

4
Jenerik suistimal nedir?
Bazı kodları incelerken, jenerik kullanmak için onu değiştirme fırsatını fark ettim. (Gizlenmiş) kodu şöyle görünür: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Bu kod şöyle, jeneriklerle değiştirilebilir: public void DoAllTheThings<T>(object[] possibleTargets[0]) { var someProperty = type(T).getProperty(possibleTargets[0]); ... } Bu yaklaşımın yararlarını ve eksikliklerini araştırırken …
35 generics 

12
Genel nesneleri bir kapta depolamak ve ardından nesneyi alıp kapsayıcıdan nesneleri indirmek kod kokusu mu?
Örneğin, Player'ın yeteneğini artıracak bazı araçlara sahip bir oyunum var: Tool.h class Tool{ public: std::string name; }; Ve bazı araçlar: Sword.h class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Shield.h class Shield : public Tool{ public: Shield(){ this->name="Shield"; } int defense; }; MagicCloth.h class MagicCloth : …

3
İyi bir genel tip sistem
Java jeneriklerinin bazı önemli yollarla başarısız olduğu yaygın olarak kabul edilmektedir. Joker karakterlerin ve sınırların birleşimi bazı ciddi olarak okunamayan kodlara yol açtı. Ancak, diğer dillere baktığımda, programcıların mutlu olduğu genel bir tip sistem bulamıyorum. Aşağıdakileri böyle bir sistemin tasarım hedefleri olarak kabul edersek: Her zaman kolay okunur tip bildirimleri …

8
C # Generics - Gereksiz metodlardan nasıl kaçınılır?
Buna benzeyen iki sınıfım olduğunu varsayalım (ilk kod bloğu ve genel sorun C # ile ilgilidir): class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } Bu sınıflar hiçbir şekilde değiştirilemez (3. parti meclisinin bir parçasıdır). Bu nedenle, …
28 c#  generics 

1
<Arasındaki fark nedir? Foo> ve <Foo>
Ben arasındaki fark hakkında bir yanlış anlamayı var gibi &lt;Foo&gt;ve &lt;? extends Foo&gt;. Anladığım kadarıyla, ArrayList&lt;Foo&gt; foos = new ArrayList&lt;&gt;(); Bu tür nesnelerin Foobu dizi listesine eklenebileceğini gösterir. Alt sınıfları Fooda tür Fooolduğundan, ile gösterildiği gibi hatasız olarak eklenebilirler ArrayList&lt;Foo&gt; foos = new ArrayList&lt;&gt;(); foos.add(new Foo()); foos.add(new Bar()); nerede Bar …
20 java  generics 

3
Jenerik mi ortak arayüz mü?
Geçen sefer jenerik dersi ne zaman yazdığımı hatırlamıyorum. Her düşündüğümden sonra ihtiyacım olduğunu her düşündüğümde bir sonuca varmam. İkinci cevap bu soruya beni (ben henüz yorum yapamam çünkü ben yeni bir soru yapılan) açıklama istemek için yapılmıştır. Şimdi, jeneriklere ihtiyaç duyduğu bir duruma örnek olarak verilen kodu alalım: public class …

4
Arayüzleri kim genişletir? Ve neden?
AFAIK, sınıf extendsana sınıflarım ve implementsarayüzlerim. Ama kullanamayacağım bir durumla karşılaşıyorum implements SomeInterface. Genel türlerin beyanıdır. Örneğin: public interface CallsForGrow {...} public class GrowingArrayList &lt;T implements CallsForGrow&gt; // BAD, won't work! extends ArrayList&lt;T&gt; Burada implementssözdizimi kullanmak yasaktır. İlk önce, &lt;&gt; içindeki arayüzü kullanmak hiç yasak değil, ama hayır diye düşündüm. …

8
Ekip üyeleri arasında genel programlama bilinci nasıl yayılır?
İnsanların inandığı bir ortamda kalıyorum: Java jenerikleri, gerçek kodlama için değil, sadece kütüphane yazmak için kullanılan özelliktir. C ++ bir OO programlama dilidir; templateisteğe bağlı ve önlenebilir bir özelliktir Yine de, bu insanlar genel programlama (örneğin, STL, Java kapsayıcıları) kullanılarak yazılan kitaplıklara güvenmektedir. templateS veya kullanarak bir kod yazarsam generics, …
20 java  c++  templates  generics 

2
Neden C # 'da yeni () bir kısıtlama var ama benzer bir kısıtlama yok?
C # jeneriklerinde, type parametresinin Tvarsayılan yapıcıya sahip olması için bir kısıtlama söyleyerek söyleyebiliriz where T : new(). Bununla birlikte, bunun gibi başka hiçbir kısıtlama geçerli değildir - new(string)örneğin, vb. Bir dil tasarımı ve / veya uygulama bakış açısından, bunun nedeni nedir? Yapıcıların çalışma biçiminde ya da bunu yasaklayan (ya …


2
Yüksek rütbeli parametrik polimorfizm faydalı mıdır?
Herkesin formun genel yöntemlerine aşina olduğundan eminim: T DoSomething&lt;T&gt;(T item) Bu fonksiyon parametrik olarak polimorfik (PP), özellikle rank-1 PP olarak da adlandırılır . Bu yöntemin, formun bir işlev nesnesi kullanılarak temsil edilebileceğini varsayalım: &lt;T&gt; : T -&gt; T Yani, &lt;T&gt;bir tür parametresi alır ve bir tür parametresi T -&gt; Talır …

3
Jenerikler nasıl uygulanır?
Derleyici iç perspektifinden gelen soru budur. Ben jenerikler, şablonlar (C ++) ile ilgilenmiyorum, bu yüzden soruyu C # ile işaretledim. Java değil, çünkü AFAIK her iki dildeki jenerikler uygulamalarda farklılık göstermektedir. Jenerik olmayan dillere baktığımda oldukça basit, sınıf tanımını doğrulayabilir, hiyerarşiye ekleyebilir ve hepsi bu. Fakat genel sınıfla ne yapmalı …
16 c#  generics 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.