Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class CatContainer <T> {
- T[] names;
- public CatContainer(){
- names=(T[]) new Object[10];
- }
- // void set(int index, T value){
- // names[index]=value;
- // }
- }
- public class CatContainer {
- Object[] names;
- public CatContainer(){
- names= new Object[10]; // массив не может изменить
- //свой тип, приведение типов отбрасывается
- }
- // void set(int index, Object value){
- // names[index]=value;
- // }
- }
- public class GenericsArray {
- public static void main(String[] args){
- CatContainer<String> cats=new CatContainer<>();
- cats.names[0]="Murzik"; //ClassCastException
- cats.set(0, "Murzik"); // OK
- Object[] arr=new Object[10];
- arr[0]="Hello"; //OK
- }
- }
- CatContainer<String> cats=new CatContainer<>();
- System.out.println(cats.names[0]);
- System.out.println(((String[])cats.names));
- Object[] objects = new Object[10];
- objects[0] = new Integer(2);
- //здесь возникнет ClassCastException
- String[] strings = (String[]) objects;
- //иначе возникли бы странные проблемы здесь
- System.out.println(strings[0].length());
- Object[] objects = new String[10];
- //ОК
- String[] strings = (String[]) objects;
- //а вот здесь уже ArrayStoreException
- objects[0] = new Integer(2);
- CatContainer<String> cats=new CatContainer<>();
- System.out.println(cats.names[0]);
- CatContainer cats=new CatContainer();
- System.out.println((String[]) cats.names);
- import java.lang.reflect.*;
- ...
- public CatContainer(Class<T> c){
- names=(T[]) Array.newInstance(c, 10);
- }
Add Comment
Please, Sign In to add comment