如何在Java中创建无类型/通用参数?

Bra*_*don 2 java types parameter-passing

所以说我有两个方法:一个添加两个int,另一个添加两个long.参数传递给函数的位置.

如何制作一个概括参数和返回值的方法来执行此操作?

Str*_*ior 6

我在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)

哪会导致运行时异常.然而,如果你有一个方法,其返回值将总是在返回后立即转换,这个技巧可以节省消费者显式转换值的麻烦.