此刻我无法绕过它,也许这是一个愚蠢的问题,但我试一试。
假设我有这些课程:
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类。
答案 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();
}
}
希望这有帮助