Una " contaminación del montón " como en los tipos no re-confiables (Los Tutoriales de Java ™> Aprendiendo el lenguaje Java> Genéricos (actualizados)) ¿Por qué se llama así?
Meta técnica, que permite posponer la configuración del tipo confiable al tiempo de ejecución.
Una " contaminación del montón " como en los tipos no re-confiables (Los Tutoriales de Java ™> Aprendiendo el lenguaje Java> Genéricos (actualizados)) ¿Por qué se llama así?
He visto varias veces en este sitio publicaciones que denuncian la implementación de genéricos en Java. Ahora, puedo decir honestamente que no he tenido ningún problema con su uso. Sin embargo, no he intentado hacer una clase genérica yo mismo. Entonces, ¿cuáles son sus problemas con el soporte...
Últimamente he tenido la costumbre de "enmascarar" colecciones de Java con nombres de clase amigables para los humanos. Algunos ejemplos simples: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } O: // If you saw a...
Mientras revisaba algún código, noté la oportunidad de cambiarlo para usar genéricos. El código (ofuscado) se ve así: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Este código podría ser...
Por ejemplo, tengo un juego que tiene algunas herramientas para aumentar la capacidad del jugador: Tool.h class Tool{ public: std::string name; }; Y algunas herramientas: Espada.h class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Shield.h class Shield :...
Es comúnmente aceptado que los genéricos de Java fallaron de algunas maneras importantes. La combinación de comodines y límites condujo a un código seriamente ilegible. Sin embargo, cuando miro otros idiomas, realmente parece que no puedo encontrar un sistema de tipo genérico con el que los...
Supongamos que tengo dos clases que se ven así (el primer bloque de código y el problema general están relacionados con C #): class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } Estas clases no se pueden cambiar de ninguna manera (son parte de...
No recuerdo cuándo escribí la clase genérica la última vez. Cada vez que creo que lo necesito después de pensarlo, llego a una conclusión que no. La segunda respuesta a esta pregunta me hizo pedir una aclaración (ya que aún no puedo comentar, hice una nueva pregunta). Así que tomemos el código...
Me estoy quedando en un ambiente donde la gente cree: Los genéricos de Java son la característica utilizada exclusivamente para la escritura de bibliotecas y no para la codificación real. C ++ es un lenguaje de programación OO; templatees una característica opcional y evitable Sin embargo,...
AFAIK, mi clase extends, clases e implementsinterfaces para padres . Pero me encuentro con una situación en la que no puedo usar implements SomeInterface. Es la declaración de un tipo genérico. Por ejemplo: public interface CallsForGrow {...} public class GrowingArrayList <T implements...
Parece que tengo un malentendido sobre la diferencia entre <Foo>y <? extends Foo>. Según tengo entendido, si tuviéramos ArrayList<Foo> foos = new ArrayList<>(); Esto indica que Foose pueden agregar objetos de tipo a esta lista de matriz. Como las subclases de Footambién...
En genéricos de C #, podemos declarar una restricción para que un parámetro de tipo Ttenga un constructor predeterminado, diciendo where T : new(). Sin embargo, ningún otro tipo de restricciones como esta son válidas, new(string)por ejemplo, etc. Desde una perspectiva de diseño y / o...
Supongamos que tengo esta jerarquía de clases ... 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...
Estoy bastante seguro de que todos están familiarizados con los métodos genéricos del formulario: T DoSomething<T>(T item) Esta función también se llama paramétricamente polimórfica (PP), específicamente rango-1 PP. Digamos que este método se puede representar usando un objeto de función...
Esta es la pregunta desde la perspectiva interna del compilador. Estoy interesado en los genéricos, no en las plantillas (C ++), así que marqué la pregunta con C #. No Java, porque AFAIK los genéricos en ambos idiomas difieren en las implementaciones. Cuando miro los idiomas sin genéricos, es...
Tal como está actualmente, esta pregunta no es adecuada para nuestro formato de preguntas y respuestas. Esperamos que las respuestas sean respaldadas por hechos, referencias o experiencia, pero esta pregunta probablemente solicitará debate, argumentos, encuestas o discusión
De acuerdo con la regla número 4 de Object Calisthenics de Jeff Bay (RTF) en The ThoughtWorks Anthology, se recomienda que uno debe " Usar colecciones de primera clase ". Regla 4: colecciones de primera clase La aplicación de esta regla es simple: cualquier clase que contenga una colección no...
En los lenguajes orientados a objetos que admiten parámetros de tipo genérico (también conocidos como plantillas de clase y polimorfismo paramétrico, aunque, por supuesto, cada nombre tiene connotaciones diferentes), a menudo es posible especificar una restricción de tipo en el parámetro de tipo,...
En una pregunta diferente de StackExchange, noté que alguien usaba este prototipo: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } Teniendo en cuenta que solo hay una restricción de tipo único ( SomeSpecificReferenceType), cuál es la diferencia y la ventaja de...
En el documento "Un estudio comparativo extendido de apoyo del lenguaje para la programación genérica" por Garcia et al. Se ofrece una comparación interesante de las características de los lenguajes de programación para la programación genérica: con la breve explicación de la...