Articles of genéricos de

Instanciando object do parâmetro type

Eu tenho uma class de modelo da seguinte forma: class MyClass { T field; public void myMethod() { field = new T(); // gives compiler error } } Como faço para criar uma nova instância de T na minha aula?

Como Autowire Bean do tipo genérico no Spring?

Eu tenho um bean Item que é necessário para ser autowired em uma class @Configuration . @Configuration public class AppConfig { @Bean public Item stringItem() { return new StringItem(); } @Bean public Item integerItem() { return new IntegerItem(); } } Mas quando eu tento @Autowire Item , recebo seguinte exceção. “No qualifying bean of type […]

Por que o compilador c # emite Activator.CreateInstance ao chamar new in com um tipo genérico com uma restrição new ()?

Quando você tem código como o seguinte: static T GenericConstruct() where T : new() { return new T(); } O compilador C # insiste em emitir uma chamada para Activator.CreateInstance, que é consideravelmente mais lenta que um construtor nativo. Eu tenho a seguinte solução alternativa: public static class ParameterlessConstructor where T : new() { public […]

Listas com curingas causam erro voodoo genérico

Alguém sabe porque o código a seguir não compila? Nem add () nem addAll () funciona como esperado. Remover a parte “? Extends” faz tudo funcionar, mas eu não seria capaz de adicionar subclasss de Foo. List list1 = new ArrayList(); List list2 = new ArrayList(); /* Won’t compile */ list2.add( new Foo() ); //error […]

Listar

Eu tenho uma pergunta Java sobre genéricos. Eu declarei uma lista genérica: List listOfMyType; Então, em algum método, tento instanciar e adicionar itens a essa lista: listOfMyType = new ArrayList(); listOfMyType.add(myTypeInstance); Onde myTypeInstance é apenas um object do tipo MyType ; não compilará. Diz: O método add (capture # 3-of? Estende MyType) no tipo List […]

Por que os literais Java enum não devem ter parâmetros genéricos?

Java enums são ótimos. Então são genéricos. Claro que todos nós sabemos as limitações do último por causa do apagamento de tipo. Mas há uma coisa que eu não entendo, porque não posso criar um enum como este: public enum MyEnum { LITERAL1, LITERAL2, LITERAL3; } Esse parâmetro de tipo genérico por sua vez, poderia […]

Método genérico de todos os controles

Não poderia pensar em um título melhor assim, apologias. Eu estou tentando converter esse método , que irá recuperar todos os controles filho de um formulário, para ser um método de extensão, bem como aceitar interfaces como inputs. Até agora eu estou até public IEnumerable GetAll(this Control control) where T : class { var controls […]

Como obter o tipo genérico em tempo de execução?

Este é o meu código: O ExecutorImp estende o AbstractExecutor que extrai as mesmas lógicas de execução de seus implementadores (ExecutorImp é um caso), ao chamar o método execute () de ExecutorImp, ele chamará o método em seu supertipo, mas o supertipo (o AbstractExcutor ) deve saber outra binding de class para o implementador (no […]

Por que um parâmetro do tipo Java não pode ter um limite inferior?

Eu entendo que você não pode ligar um parâmetro de tipo genérico de Java para um limite inferior (ou seja, usando a palavra super chave super ). Eu estava lendo o que o FAQ da Angelika Langer Generics tinha a dizer sobre o assunto . Eles dizem que basicamente se reduz a um limite inferior […]

O valor do tipo ‘T’ não pode ser convertido para

Esta é provavelmente uma questão de principiante, mas o Google surpreendentemente não forneceu uma resposta. Eu tenho esse método bastante artificial T HowToCast(T t) { if (typeof(T) == typeof(string)) { T newT1 = “some text”; T newT2 = (string)t; } return t; } Vindo de um plano de fundo em C ++, esperava que isso […]