相关疑难解决方法(0)

Java Generics:通用类型仅定义为返回类型

我正在寻找GWT的一些GXT代码,我遇到了泛型的这种使用,我在Java教程中找不到另一个例子.com.extjs.gxt.ui.client.data.BaseModelData如果要查看所有代码,则为类名.以下是重要部分:

private RpcMap map;

public <X> X get(String property) {
  if (allowNestedValues && NestedModelUtil.isNestedProperty(property)) {
    return (X)NestedModelUtil.getNestedValue(this, property);
  }
  return map == null ? null : (X) map.get(property);
}
Run Code Online (Sandbox Code Playgroud)

X在类中或层次结构中的任何地方都没有定义,当我在eclipse中点击"go to declaration"时,它只会进入<X>公共方法签名.

我试着用以下两个例子调用这个方法来看看会发生什么:

public Date getExpiredate() {
    return  get("expiredate");
}

public String getSubject() {
    return  get("subject");
}
Run Code Online (Sandbox Code Playgroud)

他们编译并显示没有错误或警告.我认为至少我必须做一个演员才能让它发挥作用.

这是否意味着Generics允许魔法返回值可以是任何东西,并且会在运行时爆炸?这似乎与泛型应该做的事情相反.任何人都可以向我解释这一点,并可能给我一些链接到一些文档,解释这一点好一点?我已经浏览了Sun关于泛型的23页pdf,并且返回值的每个示例都是在类级别定义的,或者是传入的参数之一.

java generics java-5

67
推荐指数
3
解决办法
6万
查看次数

标签 统计

generics ×1

java ×1

java-5 ×1