Articles of genéricos

LambdaConversionException com genéricos: bug da JVM?

Eu tenho algum código com uma referência de método que compila bem e falha em tempo de execução. A exceção é assim: Caused by: java.lang.invoke.LambdaConversionException: Invalid receiver type class redacted.BasicEntity; not a subtype of implementation type interface redacted.HasImagesEntity at java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:233) at java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:303) at java.lang.invoke.CallSite.makeSite(CallSite.java:289) A turma é assim: class ImageController { void doTheThing(E entity) { […]

Não é possível converter para um tipo nested não específico com genéricos

Eu tenho duas classs com genéricos nesteds. Existe uma maneira de se livrar do Tipo incompatível: não é possível converter de Msg<Value> para Msg<Value> ? Na última missão public class Value { V val; public Value(V val) { this.val = val; } @Override public String toString() { return “” + val; } } public class […]

O .NET tem uma maneira de verificar se a Lista a contém todos os itens da Lista b?

Eu tenho o seguinte método: namespace ListHelper { public class ListHelper { public static bool ContainsAllItems(List a, List b) { return b.TrueForAll(delegate(T t) { return a.Contains(t); }); } } } O objective é determinar se uma Lista contém todos os elementos de outra lista. Parece-me que algo como isto seria construído em .NET já, é […]

qual é a diferença entre ‘super’ e ‘extends’ em Java Generics

Eu estou tentando aprender genéricos Java. Não estou claro quando você usará e quando você usará . O que cada uma dessas coisas significa sobre T? Digamos que eu tenha e , o que cada um deles significa? Eu li vários tutoriais no sun.com, mas ainda estou perdido. Alguém pode ilustrar com exemplos? Obrigado!

Qual é o objective da aula opcional da Guava?

Eu li recentemente sobre isso e vi pessoas usando essa class, mas em praticamente todos os casos, usar null teria funcionado bem – se não mais intuitivamente. Alguém pode fornecer um exemplo concreto em que Optional alcançaria algo que null não poderia ou de uma maneira muito mais limpa? A única coisa que posso pensar […]

Por que devo fornecer explicitamente tipos de parâmetro genéricos Enquanto o compilador deve inferir o tipo?

Por que devo fornecer explicitamente tipos de parâmetro genéricos Enquanto o compilador deve inferir o tipo? public static T2 Cast(this T1 arg) where T2 : class where T1 : class { return arg as T2; } Uso da amostra: objOfTypeT2 = objOfTypeT1.Cast(); Comparado ao meu uso desejado com um compilador mais inteligente: objOfTypeT2 = objOfTypeT1.Cast(); […]

Inferência de tipo genérico não funciona com o encadeamento de methods?

Este código é compilado no Java 8, mas não é compilado no Java 7: class Map { static Map empty() {return null;} Map put(K k, V v) {return null;} V get(K k) {return null;} } class A { static void f(Map m){} public static void main(String[] args) { f(Map.empty()); } } Não infere o tipo […]

Vale a pena inicializar o tamanho da coleção de uma List se o tamanho for razoavelmente conhecido?

Vale a pena inicializar o tamanho da coleção de uma List se ela é razoavelmente conhecida? Editar: Aprofundando essa questão, depois de ler as primeiras respostas, essa pergunta realmente se resume a qual é a capacidade padrão e como é executada a operação de crescimento, o dobro da capacidade, etc.?

O que são genéricos em Java?

Eu realmente não entendo o ponto dos genéricos. O que eles fazem, como você os usa? Pelo que posso dizer, tudo o que eles fazem é verificar os tipos de retorno nos tempos de compilation, em vez de executar os tempos, para evitar a execução do programa antes que um erro seja lançado. Isso é […]

XML Serialize lista genérica de objects serializáveis

Posso serializar uma lista genérica de objects serializáveis ​​sem precisar especificar seu tipo. Algo como a intenção por trás do código quebrado abaixo: List serializableList = new List(); XmlSerializer xmlSerializer = new XmlSerializer(serializableList.GetType()); serializableList.Add((ISerializable)PersonList); using (StreamWriter streamWriter = System.IO.File.CreateText(fileName)) { xmlSerializer.Serialize(streamWriter, serializableList); } Editar: Para quem quis saber detalhes: quando tento rodar este código, ele […]