簡體   English   中英

Java中通用方法的綁定不匹配

[英]Bound mismatch in Java for generic method

我不明白為什么會出現此編譯錯誤

邊界不匹配: Resource類型的通用方法element(T)不適用於參數( Class<Chassis> )。 推斷的類型Class<Chassis>不是有效的替代邊界參數<T extends Resource>

使用以下代碼:

public class Resource {
    protected abstract class has<T extends Resource> {
        public has(T v) {}
    }

    protected <T extends Resource> has element(T v) {
        return new has<T>(v) {};
    }
}

class Car extends Resource {
    has chassis = element(Chassis.class);
}

class Chassis extends Resource {
}

為什么這無效? Chassis擴展Resource ,為什么不匹配<T extends Resource>

我如何約束element()方法來接受Resource類對象或任何Resource子類對象作為參數?

Chassis.classjava.lang.Class的實例,該實例僅擴展java.lang.Object

<T extends Resource>期望Resource (或其子類之一)的實際實例。

為了解決這個問題,您可以將方法聲明更改為以下內容:

protected <T extends Resource> has element(Class<T> v) {
    return new has<T>(v) {};
}

暫無
暫無

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

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