Un " Heap Pollution " come nei tipi non riutilizzabili (Tutorial Java ™> Apprendimento del linguaggio Java> Generics (aggiornato)) Perché si chiama in quel modo?
Ho visto diverse volte su questo sito post che denigrano l'implementazione di generici da parte di Java. Ora posso onestamente dire che non ho avuto problemi con il loro utilizzo. Tuttavia, non ho tentato di creare una classe generica da solo. Quindi, quali sono i tuoi problemi con il supporto …
Ultimamente ho preso l'abitudine di "mascherare" le raccolte Java con nomi di classe a misura d'uomo. Alcuni semplici esempi: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } O: // If you saw a ArrayList<ArrayList<?>> being passed around in the code, …
Durante la revisione di alcuni codici, ho notato l'opportunità di cambiarlo per usare generici. Il codice (offuscato) è simile a: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Questo codice potrebbe essere sostituito da generici, in questo modo: public void DoAllTheThings<T>(object[] possibleTargets[0]) { var someProperty …
Ad esempio, ho un gioco, che ha alcuni strumenti per aumentare l'abilità del giocatore: Tool.h class Tool{ public: std::string name; }; E alcuni strumenti: 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; }; …
È comunemente accettato che i generici Java non sono riusciti in alcuni modi importanti. La combinazione di caratteri jolly e limiti ha portato ad alcuni codici seriamente illeggibili. Tuttavia, quando guardo altre lingue, non riesco davvero a trovare un sistema di tipo generico di cui i programmatori siano contenti. Se …
Supponiamo di avere due classi che assomigliano a questo (il primo blocco di codice e il problema generale sono correlati a C #): class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } Queste classi non possono essere …
Mi sembra di avere un malinteso sulla differenza tra <Foo>e <? extends Foo>. Dalla mia comprensione, se avessimo ArrayList<Foo> foos = new ArrayList<>(); Ciò indica che è Foopossibile aggiungere oggetti di tipo a questo elenco di array. Poiché anche le sottoclassi di Foosono di tipo Foo, possono anche essere aggiunte …
Non ricordo quando ho scritto la lezione generica l'ultima volta. Ogni volta che penso di averne bisogno dopo aver pensato che faccio una conclusione, non lo faccio. La seconda risposta a questa domanda mi ha fatto chiedere chiarimenti (dal momento che non posso ancora commentare, ho fatto una nuova domanda). …
AFAIK, le mie classi extendsgenitore e le implementsinterfacce. Ma mi imbatto in una situazione, in cui non posso usare implements SomeInterface. È la dichiarazione di un tipo generico. Per esempio: public interface CallsForGrow {...} public class GrowingArrayList <T implements CallsForGrow> // BAD, won't work! extends ArrayList<T> Qui l'uso implementsè sintatticamente …
Sto in un ambiente in cui le persone credono: I generici Java sono la funzione utilizzata esclusivamente per la scrittura di librerie e non per la vera codifica. C ++ è un linguaggio di programmazione OO; templateè una funzione opzionale ed evitabile Tuttavia, queste persone fanno molto affidamento sulle librerie …
In generici C #, possiamo dichiarare un vincolo per un parametro di tipo Tcon un costruttore predefinito, dicendo where T : new(). Tuttavia, nessun altro tipo di vincoli come questo è valido, new(string)ad esempio ecc. Dal punto di vista della progettazione linguistica e / o dell'implementazione, qual è la ragione? …
Supponiamo che io abbia questa gerarchia di classi ... 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() …
Sono abbastanza sicuro che tutti abbiano familiarità con i metodi generici del modulo: T DoSomething<T>(T item) Questa funzione è anche chiamata parametricamente polimorfica (PP), in particolare la PP di grado 1 . Diciamo che questo metodo può essere rappresentato usando un oggetto funzione del modulo: <T> : T -> T …
Questa è la domanda dal punto di vista degli interni del compilatore. Sono interessato ai generici, non ai modelli (C ++), quindi ho contrassegnato la domanda con C #. Non Java, perché AFAIK i generici in entrambe le lingue differiscono nelle implementazioni. Quando guardo le lingue senza generici è abbastanza …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.