works:programmer:java:diamond-data-type
Пример работы с ромбами (class Box<T>)
Взято из Java/Generics/Types
class Box<T> { private T value; public void set(T val) { this.value = val; } public T get() { return this.value; } } // Как использовать? Box<Integer> di = new Box<>(); di.set(400); System.out.println(di.get());
Что касаемо отдельных функций, то их дефинируют так. Бонусом записался пример как конвертировать инты разных видов, но сразу скажу что так лучше не делать! В таких вариантах можно использовать перегрузку операторов, и решить задачу гораздо проще.
class MyClass { public static <T extends Number> T add(T a, T b) throws NumberFormatException { if (a instanceof Integer) { return (T)(Number)( ((Number) a).intValue() + ((Number) b).intValue() ); } else if (a instanceof Long) { return (T)(Long)( ((Number) a).longValue() + ((Number) b).longValue() ); } else if (a instanceof Double) { return (T)(Number)( ((Number) a).doubleValue() + ((Number) b).doubleValue() ); } else if (a instanceof Float) { return (T)(Number)( ((Number) a).floatValue() + ((Number) b).floatValue() ); } throw new NumberFormatException("That type of Number, is not yet supported"); } public static void main(String args[]) { int x=10; int y=25; int z = MyClass.<Long>add( Long.valueOf(x), Long.valueOf(y)).intValue(); // int z = x + y; System.out.println("Sum of x+y = " + z); } }
works/programmer/java/diamond-data-type.txt · Последнее изменение: 2023/04/21 13:33 — 127.0.0.1