1

我正在编写一个通用Pair类,它包含任何两个对象(相同或不同类型)。我现在正在编写一个复制构造函数,但是,我遇到了一些我无法解决的错误。我的代码如下:

public class Pair<T1, T2> {
    // Instance Fields
    private T1 first;
    private T2 second;

    // Constructors
    public Pair() {}

    public Pair(Pair<?, ?> p) {
        first  = p.first;  // error here
        second = p.second; // error here
    }
}

有没有办法让我使用来检查?pair 对象中的类型instanceof?如果我强制p.first转换T1它有效,但我想让我的课程彻底并处理它可能面临的任何情况,例如用户输入错误的对象对类型或可能发生的其他问题。

另一个问题是,是否有在 Java 中使用泛型的指南或某种规则?

4

1 回答 1

4

尝试? extends T1? extends T2- 这将确保您的对象属于相同类型或子类型。

public class Pair<T1, T2> {
    // Instance Fields
    private T1 first;
    private T2 second;

    // Constructors
    public Pair() {}

    public Pair(Pair<? extends T1, ? extends T2> p) {
        first  = p.first;
        second = p.second;
    }
}
于 2013-07-14T21:40:30.793 回答