静态泛型方法的类型参数T必须写在static之后、返回类型之前,即<T> 返回类型 方法名(...);T可用于参数、返回值和方法体;可使用extends约束上界;静态方法不能访问外部类的泛型参数。

Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
<p>静态泛型方法声明泛型 <strong>T</strong> 时,必须把类型参数写在返回值之前、<strong>static</strong> 关键字之后,语法为:<strong><T> 返回类型 方法名(...)</strong>。</p>
<H3>泛型参数位置不能错</H3>
<p>错误写法(编译不通过):<br>
<font color="red">static <T> void method() {...}</font> —— <strong><T></strong> 不能放在 <strong>static</strong> 前面<br>
正确写法:<br>
<font color="green">static <T> void method() {...}</font> —— <strong><T></strong> 紧跟 <strong>static</strong>,在返回类型前</p>
<H3>泛型 T 可以用于参数、返回值和方法体</H3>
<p>声明后,<strong>T</strong> 就可在整个方法签名和内部使用:</p>
<ul>
<li>作为形参类型:如 <strong><T> void print(T obj)</strong></li>
<li>作为返回类型:如 <strong><T> T getValue()</strong></li>
<li>用于局部变量或类型转换:如 <strong>T[] arr = (T[]) new Object[10];</strong>(需注意类型擦除带来的限制)</li>
</ul>
<H3>可约束泛型边界(可选但常用)</H3>
<p>用 <strong>extends</strong> 限定 <strong>T</strong> 的上界,提升类型安全性:</p>
<ul>
<li><strong><T extends Comparable<T>></strong>:要求 <strong>T</strong> 实现 <strong>Comparable</strong></li>
<li><strong><T extends Number></strong>:允许调用 <strong>doubleValue()</strong> 等方法</li>
<li>多个上界用 <strong>&</strong> 连接,如 <strong><T extends Runnable & Cloneable></strong></li>
</ul>
<H3>不能访问外部类的泛型类型参数</H3>
<p>静态方法属于类而非实例,无法引用外部类定义的泛型(如 <strong>class Box<E></strong> 中的 <strong>E</strong>):</p>
<ul>
<li>❌ 错误:<strong>static void badMethod(E e) { ... }</strong>(<strong>E</strong> 不可见)</li>
<li>✅ 正确:<strong>static <T> void goodMethod(T t) { ... }</strong>(重新声明自己的 <strong>T</strong>)</li>
</ul>

















