请教一个泛型的基础问题

Harryfin 2011-10-18 02:03:18
Integer和Class<Integer>之间是否等价呢?如果不是的话,怎么转换呢?

我的实际需求是设计一个Id类型不固定的通用实体,其中getId返回的类型就是Class<T>。但是实际写函数时,又会提示我Integer类型和Class<Integer>类型不匹配
...全文
85 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harryfin 2011-10-18
  • 打赏
  • 举报
回复
啊,没仔细看清楚你那段代码,原来那个类型标识是可以直接拿来声明类型的。要得就是这个效果。谢谢
小绵羊 2011-10-18
  • 打赏
  • 举报
回复
如果是想Id是任何類型的話可以照我那樣寫(ps:javaBean標準的寫法),把那個實體類改成我那樣,然後在somthing方法用 entity.getId() 就可以取出相應的值了


泛型裡那個T代表的就是類型信息

Class一般使用來表示類型信息的,用來做方法參數的時候一般也是用來確定返回值類型的。
Harryfin 2011-10-18
  • 打赏
  • 举报
回复
对,Id的类型是不固定的,例如有些项目是用整数做Id,有些项目是用GUID(String)做Id

但是同一个项目的Id类型定下来之后,下面写的方法可以直接用具体的类型
小绵羊 2011-10-18
  • 打赏
  • 举报
回复
如果按照你的寫法,something是沒法接受 a.Id 的。它們類型不匹配。

你那個Id是要可以表示為任何類型嗎?
Harryfin 2011-10-18
  • 打赏
  • 举报
回复
额,大虾,我不是你那个意思哦,我知道泛型可以这么创建。你还是看回我那段代码,当我对something进行调用

something(a.Id);

编译器就会给我个提示说Integer和Class<Integer>不兼容,要我更正类型。我实际想达到的效果是,是函数参数类型依然用Integer,但是a.Id也要能设置进去(当然entity<Integer>前提下)。所以不知道是不是泛型写得不对
小绵羊 2011-10-18
  • 打赏
  • 举报
回复

class TestCase {
public static void main(String[] args) throws Exception {
Entity<Integer> entity = new Entity<Integer>();
entity.setId(123);
System.out.println(entity.getId());

Entity<String> entity1 = new Entity<String>();
entity1.setId("qq");
System.out.println(entity1.getId());
}
}

class Entity<T> {
private T Id;

public T getId() {
return Id;
}

public void setId(T id) {
Id = id;
}
}
Harryfin 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 x19881216 的回复:]
Class<Integer> cla = Integer.class;
[/Quote]
那如果这样

class entity<T> {
public class<T> Id
}


entity<Integer> a = new entity<Integer>();

public void something(Integer x) {
}

怎样把a.Id传进去?

或者说,我的那个entity的id属性,是否不该这么声明呢?
小绵羊 2011-10-18
  • 打赏
  • 举报
回复
泛型的尖括號裡只能放引用類型,不能放原始類型
小绵羊 2011-10-18
  • 打赏
  • 举报
回复
java裡 int 和 Integer 不是等價的 所以他們對應的class也不相同
Harryfin 2011-10-18
  • 打赏
  • 举报
回复
有一点明白,和Integer等价的应该是类似Class<int>这样的形式,但是后者的写法不正确

我不是原学java的,所以有些语句不知道该怎么表达,谢谢。
小绵羊 2011-10-18
  • 打赏
  • 举报
回复


Class<Integer> cla = Integer.class;

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧