2017-10-05 106 views
-1
public class Test { 
    public static void main(final String[] args) { 
    B b = new B(); 
    System.out.println(b); 
    } 
} 

interface MyInterface<T> { 
    int getX(); 
} 

abstract class A implements MyInterface { 
    @Override 
    public String toString() { 
    return String.valueOf(getX()); 
    } 
} 

class B extends A, implements MyInterface<C> { 
    private static final int X = 10; 

    @Override 
    public int getX() { 
    return X; 
    } 
} 

class C { 
    // This is concrete class some 
} 

我無法使用泛型增強此接口。 它在抽象類或實現類處拋出錯誤。 我該如何做到這一點?擴展Queesion「如何引用子類變量而不在父類中聲明該變量?」

+0

請問上面的代碼編譯,甚至?它真的不清楚問題是什麼? –

+0

爲什麼你的界面有一個類型參數'T',如果你永遠不會使用它?重點是什麼?我無法告訴你想要完成什麼。 「使用泛型增強這個接口」告訴我什麼都沒有。 – ajb

+0

我打算使用T.我沒有顯示細節來簡化我的問題 –

回答

0
public class MyTest2 { 
    public static void main(final String[] args) { 
    B b = new B(); 
    System.out.println(b); 
    } 
} 

interface MyInterface<T> { 
    int getX(); 
} 

abstract class A<T> implements MyInterface { 
    @Override 
    public String toString() { 
    return String.valueOf(getX()); 
    } 
} 

class B extends A<C> { 
    private static final int X = 10; 

    @Override 
    public int getX() { 
    return X; 
    } 
} 

class C { 
    // This is concrete class some 
} 
0

你的意思是這樣嗎?

public class Test { 
    public static void main(final String[] args) { 
     MyInterface b = new B(); 
     System.out.println(b); 
    } 
} 

interface MyInterface<T> { 
    T getX(); 
} 

abstract class A<T> implements MyInterface { 
    @Override 
    public String toString() { 
     return String.valueOf(getX()); 
    } 
} 

class B extends A { 
    //private static final int X = 10; 
    private static final double X = 10; 

    //@Override 
    public Double getX() { 
     return X; 
    } 
}