Articles of genéricos

O que é reificação?

Eu sei que o Java implementa o polymorphism paramétrico (genéricos) com o apagamento. Eu entendo o que é apagar. Eu sei que o C # implementa o polymorphism paramétrico com reificação. Eu sei que isso pode fazer você escrever public void dosomething(List input) {} public void dosomething(List input) {} ou que você pode saber em […]

Java noob: generics over objects only?

Eu sou novo em Java. Enquanto codificava um Map , descobri que declarar Map é um erro de syntax enquanto Map está OK. Só é possível em Java instanciar genéricos sobre tipos de object, em oposição a primitivos? Em caso afirmativo, há uma penalidade de desempenho perceptível pelo boxe / unboxing de primitivos?

Por que List .toArray () retorna Object e não String ? como contornar isso?

Alguém sabe por que o Java 1.6 tem esse comportamento: List list = ArrayList(); String[] arr = (String[]) list.toArray(); E eu recebo um ClassCastException, porque retorna Object [] e não String []. Eu pensei que List.toArray() deveria retornar T [] – não? Alguém tem uma resposta porque esse inconveniente existe no idioma? E também como […]

Criar dinamicamente um tipo genérico para modelo

Eu estou programando o WCF usando o ChannelFactory que espera um tipo para chamar o método CreateChannel. Por exemplo: IProxy proxy = ChannelFactory.CreateChannel(…); No meu caso, estou fazendo roteamento, então não sei qual tipo a minha fábrica de canais usará. Eu posso analisar um header de mensagem para determinar o tipo, mas eu bati um […]

Contrato comparável e comparador com relação a nulo

Contrato Comparable especifica que e.compareTo(null) deve lançar NullPointerException . Da API : Note que null não é uma instância de qualquer class, e e.compareTo(null) deve lançar um NullPointerException mesmo que e.equals(null) retorne false . Por outro lado, a API Comparator não menciona nada sobre o que precisa acontecer ao comparar null . Considere a seguinte […]

Configurando o tipo genérico no tempo de execução

Eu tenho uma aula public class A { public static string B(T obj) { return TransformThisObjectToAString(obj); } } O uso da corda acima é puramente exemplar. Eu posso chamar a function estática assim muito bem em um tipo conhecido / especificado: string s= A.B(objectOfKnownType); Como eu faço esta chamada, se eu não sei T de […]

C #: conversão para interface genérica com tipo base

Aqui está o código: public interface IValidator { bool IsValid(T obj); } public class OrderValidator: IValidator { // … } public class BaseEntity { } public class Order: BaseEntity { } O problema é que não posso fazer: var validator = new OrderValidator(); // this line throws because type can’t be converted var baseValidator = […]

Inferência de tipo genérico parcial possível em C #?

Eu estou trabalhando em rewrite minha interface fluente para a minha biblioteca de classs IoC, e quando refatorei alguns códigos para compartilhar algumas funcionalidades comuns através de uma class base, descobri um problema. Nota : Isso é algo que eu quero fazer, não algo que tenho que fazer. Se eu tiver que me contentar com […]

Não é possível converter de List para List <List >

Uma lista bruta é convertida para List Bem. Por que uma lista de listas brutas não pode ser convertida em uma lista de List ? { // works List raw = null; List wild = raw; } { // Type mismatch: cannot convert from List to List<List> List raw = null; List<List> wild = raw; […]

Usando a instrução com genéricos: usando ISet = System.Collections.Generic.ISet

Como estou usando dois namespaces de coleção genérica diferentes ( System.Collections.Generic e Iesi.Collections.Generic ), tenho conflitos. Em outras partes do projeto, estou usando o framework nunit e mstest, mas qualifico que quando eu chamo Assert eu quero usar a versão nunit por using Assert = NUnit.Framework.Assert; O que funciona muito bem, mas quero fazer o […]