Bra*_*don 2 java types parameter-passing
所以说我有两个方法:一个添加两个int,另一个添加两个long.参数传递给函数的位置.
如何制作一个概括参数和返回值的方法来执行此操作?
我在GWT中看到了这样的伎俩:
public static <T> T add(long a, long b)
{
return (T)(Object)(a + b);
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
long answer = add(1L, 2L);
int answer2 = add(1, 2);
Run Code Online (Sandbox Code Playgroud)
虽然这可以满足您的要求,但这种方法的缺点是它可以让您了解糟糕的类型转换.即使您不必显式转换返回的值,您仍然可以有效地告诉代码执行转换为任何预期类型.你可能会不小心说出类似的话:
String t = add(1, 2);
Run Code Online (Sandbox Code Playgroud)
哪会导致运行时异常.然而,如果你有一个方法,其返回值将总是在返回后立即转换,这个技巧可以节省消费者显式转换值的麻烦.