比方說,我有一個帶有類型參數的類和一個方法,只有該類使用特定特徵參數化時才應該返回實例的副本具有表示類型。我可以很容易地做到這一點。我不能做的就是把一個明智的返回類型的方法: case class Foo[+A](a: A) {
// Compiles
def gotFooBar(implicit evidence: A <:< Bar[_]) = copy(a = a.Cop
這是我的代碼(嘗試寫我的類定義拷貝構造函數): public class ArgumentTree<GameArgument, Attack> extends DelegateTree<GameArgument, Attack>
{
public ArgumentTree()
{super();}
public ArgumentTree(ArgumentTree<
Class<? super T> getSuperclass()
Class類中的getSuperclass()返回類型爲<的類? super T >,這意味着超類的類型參數可以是T或其任何超類,現在SuperClass的類類型參數是如何與子類相同的類型? 例如 Class<Manage>.class.getSuperclass()
不返回 Class<Manager>
在所有..li
,同時爲了減少在我的項目的代碼複製推廣一些類我有一個錯誤,情況如下: interface ClassRoot{}
public class ClassChild1 implements ClassRoot{
// constructor is omitted for simplicity
public Collection<ClassChild1> createList()
我想使用抽象類型而不是類型參數。 在我的泛型類的構造函數,我想有泛型類型的參數,但代碼不編譯: class SomeOtherClass(val s: S){
type S
}
是「未發現:S型」 Scala編譯器錯誤 如果我使用一個類型參數,而不是一個抽象的類型,那麼它的工作原理: class SomeClass[T](val t: T){
//...
}
是否斯
如何指定特定參數化類型需要特定方法? 我的意思是:如果我有我的public class SparseMatrix<type>類,和我在類的方法(該add法)一個需要使用其成員的add方法,我怎麼可以把它要求type有add方法?我需要我的SparseMatrix不僅能夠處理數字和字符串,還能處理其他類型的可添加事物,甚至是其他基礎類型。 我也將在我的mul和sub方法中使用它。
案例類copy()方法應該創建實例的相同副本,並根據名稱替換任何字段。當case類具有帶有清單的類型參數時,這似乎失敗了。副本失去了所有參數類型的知識。 case class Foo[+A : Manifest](a: A) {
// Capture manifest so we can observe it
// A demonstration with collect wo
我有以下兩種方法聲明一個困惑: private <U, T extends U> T funWorks(T child, U parent) {
// No compilation errors
}
private <T, U super T> T funNotWorks(T child, U parent) {
// compilation erro