Olá galera, estou com um probleminha aqui e gostaria que alguem tentasse me ajudar
Bom, estou fazendo um trabalho em que tenho que implementar um vetor dinamico de inteiros e um vetor generico de inteiros.
Seguinte, o vetor dinamico já consegui fazer e funciona de boa, mas nao estou conseguindo fazer um vetor dinamico generico. Pesquise e vi que pode-se usar a Generics, mas nao sei se consigo fazer um vetor generico utilizando-as.
Lembrando que não posso usar as utilidades que o java jah traz como List, Vector e outras… tenho q implementar a minha.
Tentei fazer o seguinte:
Na parte da interface
[code] package InterfaceGenVector;
public interface InterfaceGenVector {
public void addElem(T valor);
}
[/code]
E implementando a interface
[code] package GenVector;
import InterfaceGenVector.InterfaceGenVector;
public class GenericVector implements InterfaceGenVector{
//aki da erro de generic array creation
private T[] vec = new T[1];
public void addElemFinal(T valor){
}
}
[/code]
Gostaria de saber se é possivel implementar um vetor generico utilizando generics, ou se tem algum outro método que eu poderia estar utilizando.
Você quer dar uma olhada no código do JDK? Ele realmente não consegue fazer a tal “generic array creation”. Em vez disso, ele cria um array de Object mesmo. Dê uma olhada no fonte de java.util.ArrayList.
[quote=TuSSeRa]Olá galera, estou com um probleminha aqui e gostaria que alguem tentasse me ajudar
Bom, estou fazendo um trabalho em que tenho que implementar um vetor dinamico de inteiros e um vetor generico de inteiros.
[/quote]
Eu não entendi muito bem o que vc quer dizer com “vetor generico de inteiros”: se é de inteiros não é genérico.
Como o thingol já disse java não consegue criar arrays genéricos. Mas repare que é o objeto vector que tem que ser genérico e não
o array dentro dele. Ou seja, se a classe garante que os objetos adicionados são de um certo tipo, automaticamente ela garante que o cast para esse tipo nunca vai da erro durante a leitura.
se vc quer um “generic de inteiros”, eu entendo isso como "eu quero uma classe generica e vou passar o tipo Integer para ela e ela vai fazer um vetor pra mim de inteiros, isso?
import java.util.ArrayList;
import java.util.List;
class SuaClasse<T>{
private List<T> suaLista = new ArrayList<T>();
}
e chamando ela como
SuaClasse<Integer> suaClasse = new SuaClasse<Integer>();