Integer和Class<Integer>之间是否等价呢?如果不是的话,怎么转换呢?我的实际需求是设计一个Id类型不固定的通用实体,其中getId返回的类型就是Class<T>。但是实际写函数时,又会提示我Integer类型和Class<Integer>类型不匹配

解决方案 »

  1.   

    Class<Integer>  cla = Integer.class;
      

  2.   

    有一点明白,和Integer等价的应该是类似Class<int>这样的形式,但是后者的写法不正确我不是原学java的,所以有些语句不知道该怎么表达,谢谢。
      

  3.   

    java裡  int  和 Integer 不是等價的  所以他們對應的class也不相同
      

  4.   

    那如果这样class entity<T> {
      public class<T> Id
    }
    entity<Integer> a = new entity<Integer>();public void something(Integer x) {
    }怎样把a.Id传进去?或者说,我的那个entity的id属性,是否不该这么声明呢?
      

  5.   


    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;
    }
    }
      

  6.   

    额,大虾,我不是你那个意思哦,我知道泛型可以这么创建。你还是看回我那段代码,当我对something进行调用something(a.Id);编译器就会给我个提示说Integer和Class<Integer>不兼容,要我更正类型。我实际想达到的效果是,是函数参数类型依然用Integer,但是a.Id也要能设置进去(当然entity<Integer>前提下)。所以不知道是不是泛型写得不对
      

  7.   

    如果按照你的寫法,something是沒法接受  a.Id 的。它們類型不匹配。你那個Id是要可以表示為任何類型嗎?
      

  8.   

    对,Id的类型是不固定的,例如有些项目是用整数做Id,有些项目是用GUID(String)做Id但是同一个项目的Id类型定下来之后,下面写的方法可以直接用具体的类型
      

  9.   

    如果是想Id是任何類型的話可以照我那樣寫(ps:javaBean標準的寫法),把那個實體類改成我那樣,然後在somthing方法用  entity.getId() 就可以取出相應的值了
    泛型裡那個T代表的就是類型信息Class一般使用來表示類型信息的,用來做方法參數的時候一般也是用來確定返回值類型的。