Guest User

Untitled

a guest
Nov 14th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. public class CatContainer <T> {
  2.  
  3. T[] names;
  4.  
  5. public CatContainer(){
  6. names=(T[]) new Object[10];
  7. }
  8.  
  9. // void set(int index, T value){
  10. // names[index]=value;
  11. // }
  12.  
  13. }
  14.  
  15. public class CatContainer {
  16.  
  17. Object[] names;
  18.  
  19. public CatContainer(){
  20. names= new Object[10]; // массив не может изменить
  21. //свой тип, приведение типов отбрасывается
  22. }
  23.  
  24. // void set(int index, Object value){
  25. // names[index]=value;
  26. // }
  27.  
  28. }
  29.  
  30. public class GenericsArray {
  31.  
  32. public static void main(String[] args){
  33.  
  34. CatContainer<String> cats=new CatContainer<>();
  35. cats.names[0]="Murzik"; //ClassCastException
  36. cats.set(0, "Murzik"); // OK
  37.  
  38. Object[] arr=new Object[10];
  39. arr[0]="Hello"; //OK
  40.  
  41. }
  42.  
  43. }
  44.  
  45. CatContainer<String> cats=new CatContainer<>();
  46. System.out.println(cats.names[0]);
  47.  
  48. System.out.println(((String[])cats.names));
  49.  
  50. Object[] objects = new Object[10];
  51. objects[0] = new Integer(2);
  52. //здесь возникнет ClassCastException
  53. String[] strings = (String[]) objects;
  54. //иначе возникли бы странные проблемы здесь
  55. System.out.println(strings[0].length());
  56.  
  57. Object[] objects = new String[10];
  58. //ОК
  59. String[] strings = (String[]) objects;
  60. //а вот здесь уже ArrayStoreException
  61. objects[0] = new Integer(2);
  62.  
  63. CatContainer<String> cats=new CatContainer<>();
  64. System.out.println(cats.names[0]);
  65.  
  66. CatContainer cats=new CatContainer();
  67. System.out.println((String[]) cats.names);
  68.  
  69. import java.lang.reflect.*;
  70. ...
  71. public CatContainer(Class<T> c){
  72. names=(T[]) Array.newInstance(c, 10);
  73. }
Add Comment
Please, Sign In to add comment