簡體   English   中英

檢查Java中的通配符通用對象的類型

[英]Check type of wildcard generic object in Java

我正在編寫一個通用的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
    }
}

有沒有辦法讓我檢查一下? 在使用instanceof的pair對象中? 如果我將p.firstT1它可以工作,但我想讓我的類徹底並處理它可能面臨的任何情況,例如用戶輸入錯誤的對象對類型或可能發生的其他問題。

另一個問題是,是否有在Java中使用泛型的指南或某種規則?

試試? extends T1 ? extends T1? extends T2 ? 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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM