charsli 2012-09-24 15:49
浏览 137
已采纳

关于java泛型的使用问题(求解答,十分感谢)

首先,假如有这样的一个类定义
public class Query
{
public T get(Class class){}
public List getAll(Class class){}
}这里在query后面定义的是什么意思,为什么要在这个位置定义呢?跟后面方法的参数T又有什么关系呢?
其次,有这样的定义类
public class Query
{
public T get(Class class){}
public List getAll(Class class){}
}这样写为什么也可以呢,为什么不在query后面跟上定义就要在方法的前面加上定义呢?
然后,如果有这样的定义类
public class Query
{}这里T后面的参数可以是多个吗?这样定义又是什么意思呢?
求好心人解答,大恩不言谢

  • 写回答

6条回答 默认 最新

  • wangdgsc0105 2012-09-24 19:48
    关注

    声明的T可以出现多个
    在类定义处声明的泛型,则用来指定这个类用来处理的对象类型,这个类中定义的所有方法,只要使用了类定义处声明的泛型参数,则都必须使用同一个对象,否则,编译就会出现错误
    如果仅仅是在方法声明处定义泛型,则表示这个方法的参数或返回值使用什么类型的数据,解决的问题
    1.不再需要强制转型;
    2.编辑器增加了强制检查集合中的对象类型的功能,避免了在Girl的集合中出现Boy对象的问题(虽然有的时候是我们所期待的)

    如:
    public class Query{
    private T t;
    public T get(){...};
    public void set(T t){...};
    }

    如果使用的方式如下:
    Query query = new Query();
    则上面定义的类与下面的定义一致
    public class Query{
    private User t;
    public User get(){...}
    public void set(User t){}
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥15 怎么做商品窗体,完完全全不会
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了