Guest User

Untitled

a guest
Jul 15th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. public <T extends SomeBaseClass> void myMethod(Class<T> clz)
  2.  
  3. public void myMethod(Class<? extends SomeBaseClass> clz)
  4.  
  5. List<String> jedis = new ArrayList<String>();
  6. jedis.add("Obiwan");
  7.  
  8. List<? extends CharSequence> ls = jedis
  9. CharSequence obiwan = ls.get(0); //Ok
  10. ls.add(new StringBuffer("Anakin")); //Not Ok
  11.  
  12. List<Object> jedis = new ArrayList<Object>();
  13. jedis.add("Obiwan");
  14.  
  15. List<? super String> ls = jedis;
  16. ls.add("Anakin"); //Ok
  17. String obiwan = ls.get(0); //Not Ok, we can´t be sure list is of Strings.
  18.  
  19. public static void sort(List<? extends Number> numbers){
  20. Object[] a = numbers.toArray();
  21. Arrays.sort(a);
  22. ListIterator<? extends Number> i = numbers.listIterator();
  23. for (int j=0; j<a.length; j++) {
  24. i.next();
  25. i.set((Number)a[j]); //Not Ok, you cannot be sure the list is of Number
  26. }
  27. }
  28.  
  29. public static <T extends Number> void sort(List<T> numbers){
  30. Object[] a = numbers.toArray();
  31. Arrays.sort(a);
  32. ListIterator<T> i = numbers.listIterator();
  33. for (int j=0; j<a.length; j++) {
  34. i.next();
  35. i.set((T)a[j]);
  36. }
  37. }
  38.  
  39. List<? extends Number> ints = new ArrayList<Integer>();
  40. List<? extends Number> floats = new ArrayList<Float>();
  41. sort(ints);
  42. sort(floats);
  43.  
  44. class Foo {
  45. public <T extends SomeBaseClass> void myMethod(Class<T> clz) { }
  46. }
  47.  
  48. class Bar extends Foo {
  49. public void myMethod(Class<? extends SomeBaseClass> clz) { }
  50. }
  51.  
  52. <T extends Comparable<T>> T max(T a, T b) {
  53. return a.compareTo(b) > 0 ? a : b;
  54. }
  55.  
  56. Comparable<?> max(Comparable<?> a, Comparable<?> b) {
  57. return a.compareTo(b) > 0 ? a : b;
  58. }
  59.  
  60. max(Integer.MAX_VALUE, "hello");
  61.  
  62. <T extends Comparable<T>> T max(T... ts) {
  63. if (ts.length == 0) {
  64. return null;
  65. }
  66. T max = ts[0];
  67. for (int i = 1; i < ts.length; i++) {
  68. if (max.compareTo(ts[i]) > 0) {
  69. max = ts[i];
  70. }
  71. }
  72. return max;
  73. }
  74.  
  75. public static void reverse(List<?> list) { rev(list);}
  76. private static <T> void rev(List<T> list){ ... }
Add Comment
Please, Sign In to add comment