简体   繁体   English

关于“如何引用子类变量而不在父类中声明该变量的扩展问题?”

[英]Extended Queesion on "how to refer subclass variable without declaring that variable in parent class?"

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 
}

I am unable to enhance this interface with generic.我无法用通用来增强这个界面。 It is throwing error either at abstract class or at implementation class.它在抽象类或实现类中抛出错误。 How do I make it possible?我如何使它成为可能?

Do you mean something like this?你的意思是这样的吗?

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM