首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >泛型类型

泛型类型
EN

Stack Overflow用户
提问于 2016-11-07 17:22:10
回答 1查看 75关注 0票数 0

检查我的自定义类。如果我将DoSomething()更改为

代码语言:javascript
复制
 final Custom<User> _custom = new Custom<>(new TypeToken<Custom<User>.Response<User>>(){}, "");

则调试日志为:"com.application.models.Custom$Response<com.application.models.User>" serverResponse: ""

但如果DoSomething是:

代码语言:javascript
复制
  final Custom<T> _custom = new Custom<>(new TypeToken<Custom<T>.Response<T>>(){}, "");

调试日志为:

代码语言:javascript
复制
"com.application.models.Custom$Response<T>" serverResponse: "

我有一个这样的类:

代码语言:javascript
复制
public class Main
{
    public static <T> void DoSomething()
    {
        final Custom<T> _custom = new Custom<>(new TypeToken<Custom<T>.Response<T>>(){}, "");
    }
}

//我在变量右边添加了调试日志

代码语言:javascript
复制
public class Custom<T>
{
    private TypeToken<Response<T>> _responseType;   _response: null
    private Response<T> _response; _response: null
    private String _serverResponse; _serverResponse = null;

    public Custom(TypeToken<Response<T>> responseType, String serverResponse)  `responseType: "com.application.models.Custom$Response<T>" serverResponse: "`
    {
        this._responseType = responseType;
        this._serverResponse = serverResponse;
    }

     public class Response<t>
    {
        private List<t> data = null;

        public List<t> GetData()
        {
            return this.data;
        }
    }
}

这就是我称之为Main的地方..

代码语言:javascript
复制
    public class User
{
    public int Id;

    public void Test()
    {
        Main.<User>DoSomething();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-11-07 17:32:30

Java主要使用编译时泛型,这意味着当你编译时,你的泛型就消失了。它们只是一个编译时检查。这回答了你的问题吗?谷歌类型擦除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40461633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档