扩展Queesion“如何引用子类变量而不在父类中声明该变量?”

扩展Queesion“如何引用子类变量而不在父类中声明该变量?”

问题描述:

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.我没有显示细节来简化我的问题 –

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 
} 

你的意思是这样吗?

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; 
    } 
}