java 泛型高手请进来看一下

it73202 2010-03-01 01:34:44
手上有一段这样的C#代码要转换成java代码,因之前未接触过java,对一些语法还不是很清楚,

现在已写了一个这样的泛型函数:

public static <T> List<T> Parse(byte[] data) //T 将是在另外定义的所有继承基类BaseBlob的子类的泛型参数
{
List<T> series = new ArrayList<T>();


已知所有继承基类BaseBlob的子类都有一个成员叫attrList(基类本身也有这个成员)类型是ArrayList型

在这要把这个传进来的泛型参数T 的这个成员值取出来

语法上该怎么写????


ArrayList myList = --------?????





return series;
}
...全文
509 57 打赏 收藏 转发到动态 举报
写回复
用AI写文章
57 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-08-14
  • 打赏
  • 举报
回复
class ParameterType<T>
{
public void printT()
{
//通过反射获取T
//写法应该是 获取参数化了的父类,如果没有参数化的父类那么返回当前类。
//然后获取上面的泛型类型
}
}
public class Main(String[] args)
{
//如果你这样用是不能获取到T的运行时类型的,因为父类中的T在编译之后其实是一个Object了,当然 不能获取到真实的T的信息了。
ParameterType<String> pt=new ParameterType<String>();

//但是如果你这样用就可以了
//,因为子类编译之后保存了完整的继承信息,extends ParameterType<String>
//既然类文件中记录了那些信息那么就可以通过反射给找出来
ParameterType<String> subimpl=new SubClass();
}
class SubClass extends ParameterType<String>
{
}
//只是我的理解。我也看过编译之后的class文件的信息,那个T在编译之后是一个Object
BearKin 2010-03-04
  • 打赏
  • 举报
回复
引用 54 楼 it73202 的回复:
引用 53 楼 bearkin 的回复:引用 52 楼 it73202 的回复:引用 50 楼 bearkin 的回复:引用 49 楼 it73202 的回复:很感谢大家,可惜没有谁正面回答我问题就是不知道怎么根 你正面问题一开始也没描述明白啊 把问题抽象化 .. ---------------------------- 问题还没明白? 一开始.. 你其实可以很简单的说:如何在一个对象内获取他被指定的泛型 然后写段代码贴上...

------------------------------------

public static <T extends BaseBlob> List <T> Parse(byte[] data) throws Exception
  {

      这里面怎么实例化 T 的对象?
       
}

对象本身怎么获得他自己的泛型信息..乱了乱了.. 你的问题解决了么? 我问你的事情你也没告诉我啊..
看45L
it73202 2010-03-04
  • 打赏
  • 举报
回复
引用 53 楼 bearkin 的回复:
引用 52 楼 it73202 的回复:引用 50 楼 bearkin 的回复:引用 49 楼 it73202 的回复:很感谢大家,可惜没有谁正面回答我问题就是不知道怎么根 你正面问题一开始也没描述明白啊 把问题抽象化 .. ---------------------------- 问题还没明白?

一开始..

你其实可以很简单的说:如何在一个对象内获取他被指定的泛型 然后写段代码贴上...


------------------------------------

public static <T extends BaseBlob> List<T> Parse(byte[] data) throws Exception
{

这里面怎么实例化 T 的对象?

}


BearKin 2010-03-04
  • 打赏
  • 举报
回复
引用 52 楼 it73202 的回复:
引用 50 楼 bearkin 的回复:引用 49 楼 it73202 的回复:很感谢大家,可惜没有谁正面回答我问题就是不知道怎么根 你正面问题一开始也没描述明白啊 把问题抽象化 ..
----------------------------
问题还没明白?


一开始..

你其实可以很简单的说:如何在一个对象内获取他被指定的泛型 然后写段代码贴上...
it73202 2010-03-04
  • 打赏
  • 举报
回复
引用 50 楼 bearkin 的回复:
引用 49 楼 it73202 的回复:很感谢大家,可惜没有谁正面回答我问题就是不知道怎么根

你正面问题一开始也没描述明白啊 把问题抽象化 ..

----------------------------
问题还没明白?
it73202 2010-03-04
  • 打赏
  • 举报
回复
首先很感谢各位java高手的回复,可能是我没有描述问清楚,至今没看到我想要的答案,就是问题好像没解决
这里再说一遍,期待java高手的指点,本人才用java两三天时间(之前用C#/C++多一点)

最终外层这样调用:

List<BlobDLLL> list = BaseBlob.<BlobDLLL>Parse(org_content);//org_content 是byte[]数组
泛型函数:

public static <T extends BaseBlob> List<T> Parse(byte[] data) throws Exception
{
List<T> series = new ArrayList<T>();
for(..) //些循环体内依据 字节流 的长度 和 T(某个继承BaseBlob 的类)对象本身长度 依次把字节流序列成一个个的对象,存入 series list里
{
T blob = new T() //????这是报错的,但就是想实现 实例化这个泛型参数T

这样的功能C++ 和 C# 是可以实现实,难道java没办法实现?

...

series.add(blob);
}
return series;
}
guyehanxinlei 2010-03-03
  • 打赏
  • 举报
回复
学习了 !
BearKin 2010-03-03
  • 打赏
  • 举报
回复
引用 49 楼 it73202 的回复:
很感谢大家,可惜没有谁正面回答我问题
就是不知道怎么根


你正面问题一开始也没描述明白啊 把问题抽象化 ..
it73202 2010-03-03
  • 打赏
  • 举报
回复
很感谢大家,可惜没有谁正面回答我问题
就是不知道怎么根
dickli1986 2010-03-03
  • 打赏
  • 举报
回复
没明白什么意思???
BearKin 2010-03-03
  • 打赏
  • 举报
回复
引用 46 楼 dinghun8leech 的回复:
一个泛型的问题居然也跟了40多贴。到底有啥深奥之处?
没有深奥之处 你看一遍就知道了
dinghun8leech 2010-03-03
  • 打赏
  • 举报
回复
一个泛型的问题居然也跟了40多贴。到底有啥深奥之处?
BearKin 2010-03-03
  • 打赏
  • 举报
回复
引用 43 楼 it73202 的回复:
引用 42 楼 bearkin 的回复:引用 40 楼 it73202 的回复:哪有别的办法实现么? 我在想你调用该方法的时候不是设置类型么。。
--------------------
请明示


你在调用方法的时候 得先创建该类的对象吧 创建对象的时候 是不是得指定他的泛型啊..
zm_hs 2010-03-03
  • 打赏
  • 举报
回复
鄙视一下!!!!!!!!!!!!!
it73202 2010-03-03
  • 打赏
  • 举报
回复
引用 42 楼 bearkin 的回复:
引用 40 楼 it73202 的回复:哪有别的办法实现么?

我在想你调用该方法的时候不是设置类型么。。

--------------------
请明示
BearKin 2010-03-02
  • 打赏
  • 举报
回复
你是不是就是想获得T里的一个类变量?
it73202 2010-03-02
  • 打赏
  • 举报
回复
data[]是类的对象数组对应的字节流,后面的参数用来获取该类的一些信息,以便函数体内做序列化的操作
BearKin 2010-03-02
  • 打赏
  • 举报
回复
你前面的data[]是干嘛用的?GetDataTypeAttribute这个方法只返回类的属性么?
it73202 2010-03-02
  • 打赏
  • 举报
回复
现在用java怎么实现上面类似功能的函数及怎么调用?
你能写一下sample code么
BearKin 2010-03-02
  • 打赏
  • 举报
回复
你不是想获得泛型信息的类信息么?
加载更多回复(37)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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