`
lizhuang
  • 浏览: 904261 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

获取范型T的NSString

 
阅读更多
T.getClass()或者T.class都是非法的,因为T是泛型变量。
由于一个类的类型是什么是在编译期处理的,故不能在运行时直接在Base里得到T的实际类型。
有一种变通的实现方式:
import java.lang.reflect.Array;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class Generic extends Base<String> {
public static void main(String[] args) {
  Generic c = new Generic();
  System.out.println(c.array);
}

Object array ;
public Generic() {
  array = Array.newInstance(getGenericType(0), 100);
}
}

class Base<T> {
public Class getGenericType(int index) {
  Type genType = getClass().getGenericSuperclass();
  if (!(genType instanceof ParameterizedType)) {
   return Object.class;
  }
  Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
  if (index >= params.length || index < 0) {
   throw new RuntimeException("Index outof bounds");
  }
  if (!(params[index] instanceof Class)) {
   return Object.class;
  }
  return (Class) params[index];
}
}
其中Base<T>是泛型类,在父类中声明getGenericType,子类继承具体的Base<String>,那么在子类中就可以通过getGenericType(0)获取到String的class.
分享到:
评论

相关推荐

    Java如何获取泛型类型

    Java 运行时如何获取泛型参数的类型 Java类型Type 之 ParameterizedType,GenericArrayType,TypeVariabl,WildcardType 从实现的接口获取泛型参数 定义一个泛型父类: public interface SuperClass { String ...

    C++多范型设计

    《C++多范型设计》是一本深入探讨C++编程语言中模板技术的专著,由知名软件工程师James O. Coplien撰写,并由鄢爱兰、周辉等翻译成中文版,ISBN号为9787508318240。这本书的核心主题是C++中的泛型编程,它是C++编程...

    looly#hutool-site#泛型类型工具-TypeUtil1

    介绍获取方法的参数和返回值类型(包括Type和Class)获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型)方法首先我们定义一个类:public cla

    论文研究-消息传递范型与C/S范型双范型的主数据管理机制 .pdf

    本文提出的基于消息传递范型和客户机/服务器(Client/Server,简称C/S)范型双范型的主数据管理机制,能够有效解决MDM面临的问题。 消息传递范型是计算机科学中的一个基本概念,用于描述进程间通信的方式。在这范型...

    范型程序设计与 STL.pdf

    《范型程序设计与 STL》是一本深入探讨C++编程中的关键概念和技术的书籍,主要聚焦于范型(Generic Programming)和标准模板库(Standard Template Library,简称STL)。范型编程是一种强大的软件开发方法,它允许...

    范型List Dictory增加事件功能

    **范型List&lt;T&gt;增加事件功能** `List&lt;T&gt;`是一个动态数组,可以存储同一类型的元素。我们可以通过创建一个继承自`List&lt;T&gt;`的派生类,并在其中添加事件来实现事件功能。例如,我们可以定义一个`ObservableList&lt;T&gt;`类,...

    Java 范型Java 范型.doc

    Java 范型Java 范型

    《分布式系统原理与范型》.pdf

    《分布式系统原理与范型》作为一本系统介绍分布式系统基本原理与实践应用的书籍,涵盖了分布式系统设计与实现的核心理念。分布式系统指的是由多个可以独立运行的计算单元构成的系统,这些计算单元通过通信网络相互...

    分布式系统原理与范型

    《分布式系统原理与范型》是分布式系统中的经典教材,全书分为两部分:原理和范型。第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了...

    C++多范型设计 作者:[美]James O.Coplien

    书名:C++多范型设计 作者:[美]James O.Coplien 译者: 出版社:中国电力出版社 本书详细地介绍了从“应用领域”到“方案领域”的C++设计实现方法,以及开发者在设计思考和设计实践过程中需要用到的记法、图表和设计...

    分布式系统原理与范型(第二版)

    分布式系统原理与范型是IT领域中至关重要的一个主题,特别是在云计算、大数据处理以及现代互联网服务的背景下,理解和掌握分布式系统的概念与实践至关重要。本书作为第二版,深度探讨了这一领域的核心理论和常见模式...

    Java 范型攻略篇

    例如,`ArrayList`在Java 1.5中被重构为`ArrayList&lt;T&gt;`,这里的`T`就是类型参数,表示这是一个泛型列表,可以用来存储任何类型的元素。当实例化`ArrayList`时,可以指定具体的类型,如`ArrayList&lt;String&gt;`,这样就...

    C++多范型设计.pdf

    C++多范型设计.pdfC++多范型设计.pdfC++多范型设计.pdf

    分布式系统原理与范型答案(第二版)答案

    分布式系统原理与范型是计算机科学中的一个重要领域,它涵盖了多台计算机如何通过网络协同工作,以实现一个共同的目标。《分布式系统原理与范型(第二版)》这本书深入浅出地介绍了这一主题,旨在帮助读者理解分布式...

    分布式系统-原理与范型(第2版) 完整版

    第2~9章讨论的是分布式系统的的原理、概念和技术,包括通信、进程、命名、同步化、一致性和复制、容错性以及安全性等,而分布式应用的开发方法(即范型)在第10~13章中进行了讨论。但是,与前一版不同的是,我们...

    分布式系统-原理与范型(第2版)

    分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版)

    C++ 多范型设计

    例如,`template&lt;typename T&gt; T max(T a, T b)` 是一个简单的函数模板,用于找出两个参数中较大的一个,无论它们是整数、浮点数还是自定义类型。函数模板的使用可以消除重复的代码,提高代码效率。 2. 类模板:类...

Global site tag (gtag.js) - Google Analytics