【问题标题】:Subclassing an abstract class with an unknown variable type子类化具有未知变量类型的抽象类
【发布时间】:2021-12-28 16:53:44
【问题描述】:

我正在创建一个可重用的属性类,我想基于一个抽象类,我将在 Java 中使用不同的变量类型进行子类化。

public abstract class Property{
protected String name;
protected <type> type;

/* 这就是问题所在,抽象类不知道对象类型是什么——所以如果我派生一个类型为 String 的 StringProperty 类,我该如何实现我的 setter 和 getter?在父类中?*/

public void setName(String n){
  name= n;
}
public String getName(){
 return name;
}

}//结束类

public class StringProperty  extends Property{
super.setName("email");
super.setType("String");


}//end class

我想将抽象父类泛化,以便可以将其派生为 StringProperty、IntProperty、BoolProperty 等,并在编译时设置派生类型,但我无法弄清楚。

我希望每个属性实例都具有三个属性:名称、类型和值。
由子类继承? getter方法需要事先知道类型

【问题讨论】:

    标签: java oop generics


    【解决方案1】:

    你的意思是泛型类型?

    public abstract class Property<T> {
      protected String name;
      protected T type;
    
      public T getType() {
       return type;
      }
      public void setType(T type) {
        this.type = type;
      }
    }
    
    public class StringProperty extends Property<String> {
     ...
    }
    

    【讨论】:

    • 我会删除 T 类型、getType 和 setType。
    • 只是nametype 应该是私有的
    猜你喜欢
    • 2019-10-06
    • 1970-01-01
    • 2018-05-03
    • 2012-05-13
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多