- public class Test<M> {
- public static void test(M m) {
- }
- }
复制代码 这句话的错误提示是无法在静态上下文中引用非静态类 M.
因为test方法是静态的可以用类名直接调用,而M只有在类Test创建对象的时候才会明确.
test静态方法存在的时候还没明确M是什么.
所以静态方法不可以访问类上定义的泛型.
如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上.
可以改成:- public static <W> void test(W w)
- {}
复制代码 这样就可以了.
至于- throw new Exception();
- } catch (M e)
- {}
- }
复制代码 catch的作用是处理异常,所以catch的参数应该都是异常的类型,而不是泛型.
所以不行. |