我知道是否可以在方法中使用 if 语句来检查所用泛型的类型。在让我思考这个问题的情况下,我想以不同的方式处理一个非常基础Point2D
的课程和一个Point3D
课程。在我需要访问的 3D 点的情况下,Point3d.z
我不确定这是否会导致问题 我想做的伪代码版本是
public <T> void processPoints(T point) {
process(point.x);
process(point.y);
if (T == Point3D) { // What do I do here?
process(point.z); // Will accessing z cause problems?
}
}
实际上,代码process
表示要复杂得多并且z
依赖于x
,y
因此我正在寻找一种避免代码重复的方法。我可能会想办法重载函数,但我很好奇,所以我可以了解更多关于泛型的信息。