具有Generic-Type的Java Generic Class扩展了多个其他类

时间:2017-07-13 19:07:18

标签: java class generics extend

此刻我无法绕过它,也许这是一个愚蠢的问题,但我试一试。

假设我有这些课程:

class CellType1 {

    public void doSomething(){
      // does something ClassType1 specific
    }
}

class CellType2 {

    public void doSomething(){
       // does something ClassType2 specific
    }
}

class CellType3 {

    public void doSomething(){
       // does something ClassType3 specific
    }
}

这些类共享相同的功能,但功能本身的工作方式不同。现在我有这个班级:

 class Map<CellTypes>{
   CellTypes cell;

    //...
        public void function(){
           cell.doSomething();
        }

    //...

    }

这个班级&#39;通用类型稍后将成为三个上层类别之一。在这个类中,我想访问doSomething() - 这个特定CellType-Object的函数。我试过了

class Map<CellTypes extends CellType1, CellType2, CellType3> {
/*...*/
}

但这限制了我对CellType1的功能。 如何在Generic类中使用不同类中的函数? 也许有人比我有更好的主意! 我希望这是可以理解的。

提前谢谢。

编辑:

我需要将我的类映射作为通用类,因为我需要创建不同的map对象并将它们传递给他们需要使用的CellType类。

3 个答案:

答案 0 :(得分:1)

您可以创建一个界面:

     var select = "select C.LSTNAME from C inner join bd ON bd.id = C.id where C.LSTNAME = @nameParam";
    var c = new SqlConnection(CnnString.CnnVal("DB2"));
    SqlCommand command = new SqlCommand(select, c);
    command.Parameters.AddWithValue("@nameParam", Cust_TB.Text);
    var dataAdapter = new SqlDataAdapter(command);

并实现如下界面:

interface CellType {
    public void doSomething();
}

class CellType1 implements CellType { public void doSomething(){ // does something ClassType1 specific } } class CellType2 implements CellType { public void doSomething(){ // does something ClassType2 specific } } class CellType3 implements CellType { public void doSomething(){ // does something ClassType3 specific } } 上课:

Map

答案 1 :(得分:0)

public interface CanDoSomething {
    public void doSomething();
}

然后所有其他类都实现了这个接口。仅当方法签名在所有情况下都相同时,此方法才有效。

答案 2 :(得分:0)

interface CellType {
   void doSomething();   
}
class CellType1 implements CellType {
    public void doSomething(){
        //your logic
    }
}
//similar implementation logic for CellType2 and CellType3
class Map {
   private CellType cellType;
   public Map(CellType cellType){
       this.cellType = cellType;
   }
   public void someFunc(){
      cellType.doSomething();
   } 
}

希望这有帮助