为什么泛型类型不能在静态方法中声明为 return 类型?
Why are generic types unable to be declared as a return type in static methods?
我明白为什么我无法将参数 InterestPoint<M>
传递给第二个方法,因为它是静态的,但是为什么当我尝试将其声明为 return 类型?删除类型参数可以修复此问题,但随后我会收到警告:Raw use of parametrized class 'InterestPoint'.
public record InterestPoint<M>(Coordinate coordinate, M marker) {
public final InterestPoint<M> validate() {
return this;
}
public static final InterestPoint<M> validate(InterestPoint interestPoint) {
interestPoint.validate();
return interestPoint;
}
}
M
泛型类型参数属于实例,而静态方法不属于具体实例,而是属于class。让静态方法return成为泛型的方法就是直接给它加一个类型参数。例如:
public static final <N> InterestPoint<N> validate(InterestPoint<N> interestPoint) {
interestPoint.validate();
return interestPoint;
}
我明白为什么我无法将参数 InterestPoint<M>
传递给第二个方法,因为它是静态的,但是为什么当我尝试将其声明为 return 类型?删除类型参数可以修复此问题,但随后我会收到警告:Raw use of parametrized class 'InterestPoint'.
public record InterestPoint<M>(Coordinate coordinate, M marker) {
public final InterestPoint<M> validate() {
return this;
}
public static final InterestPoint<M> validate(InterestPoint interestPoint) {
interestPoint.validate();
return interestPoint;
}
}
M
泛型类型参数属于实例,而静态方法不属于具体实例,而是属于class。让静态方法return成为泛型的方法就是直接给它加一个类型参数。例如:
public static final <N> InterestPoint<N> validate(InterestPoint<N> interestPoint) {
interestPoint.validate();
return interestPoint;
}