Java 泛型类:引用特定于类型的方法
我有一个有界泛型类,我们称之为泛型类,带有一个扩展抽象类抽象的参数T: 通用类:Java 泛型类:引用特定于类型的方法,java,generics,methods,reference,abstract,Java,Generics,Methods,Reference,Abstract,我有一个有界泛型类,我们称之为泛型类,带有一个扩展抽象类抽象的参数T: 通用类: public class Generic<T extends Abstract> { public <T extends Abstract> List<T> method() { Map<String,String> map = T.getMap(); //this is the line with the error. I'll
public class Generic<T extends Abstract> {
public <T extends Abstract> List<T> method() {
Map<String,String> map = T.getMap(); //this is the line with the error. I'll explain it below
//return statement and such
}
}
公共类泛型{
公共列表方法(){
Map Map=T.getMap();//这是错误所在的行。我将在下面解释
//返回语句等
}
}
抽象类
public abstract class Abstract {
protected Map<String, String> map;
public abstract Map<String, String> getMap();
}
public class class1 extends Abstract {
public class1() {
//map is inmutably defined here and assigned to the super
}
@Override
public Map<String, String> getMap() {
return super.map;
}
}
公共抽象类抽象{
保护地图;
公共抽象映射getMap();
}
泛型类中T引用的类
public abstract class Abstract {
protected Map<String, String> map;
public abstract Map<String, String> getMap();
}
public class class1 extends Abstract {
public class1() {
//map is inmutably defined here and assigned to the super
}
@Override
public Map<String, String> getMap() {
return super.map;
}
}
公共类class1扩展了抽象类{
公共类别1(){
//映射在这里以不可变的方式定义并分配给超级用户
}
@凌驾
公共地图getMap(){
返回super.map;
}
}
当尝试引用方法getMap()时,它来自T边界内的一个类(根据抽象类定义,T的所有可能实例都将具有该类),我得到以下错误:
无法从静态上下文引用非静态方法getMap()
但是没有任何静态关键字。我遗漏了什么
谢谢!因为方法
getMap()
是一个实例方法(即不是static
),如果T
调用该方法,则需要一个实例
您的类层次结构看起来也不太好。我认为您实际上想要的是:
public class Generic<T> extends Abstract<T> {
}
public abstract class Abstract<T> {
protected Map<String, T> map;
}
公共类泛型扩展抽象{
}
公共抽象类抽象{
保护地图;
}
但是如果没有您的意图,我不能确定。是的,为了清晰起见,我简化了整个过程。在我的项目中,有一个名为“Material”的抽象类,以及一组在这些字段中具有类似字段和操作的材质,它们都扩展了Material类。我正在尝试编写一些DB操作(通用类)对于具有单个类的所有材质都是通用的。这里的映射是所有材质的哈希映射。您对改进我的结构有什么建议吗?还有,有没有方法在泛型类中声明T的实例?我尝试了T=new T();但它当然不起作用。谢谢!最好发布实际代码的简化版本-这对读者来说更有意义。如果您有编译错误,请在此处询问。如果您要求评论或您的方法,请询问“谢谢”,就可以了!