「java泛型类实例化」java 类泛型
今天给各位分享java泛型类实例化的知识,其中也会对java 类泛型进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java泛型编程之诀窍
- 2、java 泛型对象能实例化吗T t=new T()
- 3、java的泛型类怎么实例化对象?
- 4、java泛型的问题 一个泛型类 如果要实例化他 肯定是这样创建对象 Class c = new Class
- 5、Java 泛型参数如何实例化
- 6、java 泛型数组怎么实例化
Java泛型编程之诀窍
; JDK 令我们期待很久 可是当他发布的时候却更换版本号为 这说明Java已经有大幅度的变化 本文将讲解JDK 支持的新功能 Java的泛型 Java泛型 其实Java的泛型就是创建一个用类型作为参数的类 就象我们写类的方法一样 方法是这样的method(String str String str ) 方法中参数str str 的值是可变的 而泛型也是一样的 这样写class Java_GenericsK V 这里边的K和V就象方法中的参数str 和str 也是可变 泛型通配符 下面我们先看看这些程序 //Code list void TestGen Medthod (List l) { for (Object o : l) System out println(o) } 看看这个方法有没有异议 这个方法会通过编译的 假如你传入String 就是这样ListString 接着我们调用它 问题就出现了 我们将一个ListString当作List传给了方法 JVM会给我们一个警告 说这个破坏了类型安全 因为从List中返回的都是Object类型的 而让我们再看看下面的方法 //Code list void TestGen Medthod (ListStringl) { for (Object o : l) System out println(o) } 因为这里的ListString不是ListObject的子类 不是String与Object的关系 就是说ListString不隶属于listObject 他们不是继承关系 所以是不行的 这里的extends是表示限制的 类型通配符是很神奇的 List?这个你能为他做什么呢?怎么都是 ? 它似乎不确定 他总不能返回一个?作为类型的数据吧 是啊他是不会返回一个 ? 来问程序员的?JVM会做简单的思考的 看看代码吧 更直观些 //code list ListStringl = new ArrayListString() li add( String ) List?l = l ; System out println(l get( )) 这段代码没问题的 l get( )将返回一个Object 编写泛型类要注意 ) 在定义一个泛型类的时候 在 之间定义形式类型参数 例如 class TestGenK V 其中 K V 不代表值 而是表示类型 ) 实例化泛型对象的时候 一定要在类名后面指定类型参数的值(类型) 一共要有两次书写 例如 TestGenString Stringt=new TestGenString String() ) 泛型中K extends Object extends并不代表继承 它是类型范围限制
泛型与数据类型转换 消除类型转换 上面的例子大家看到什么了 数据类型转换的代码不见了 在以前我们经常要书写以下代码 如 //code list import Java util Hashtable; class Test { public static void main(String[] args) { Hashtable h = new Hashtable() h put( key value ) String s = (String)h get( key ) System out println(s) } } 这个我们做了类型转换 是不是感觉很烦的 并且强制类型转换会带来潜在的危险 系统可能会抛一个ClassCastException异常信息 在JDK 中我们完全可以这么做 这里我们使用泛化版本的HashMap 这样就不用我们来编写类型转换的代码了 类型转换的过程交给编译器来处理 是不是很方便 而且很安全 上面是String映射到String 也可以将Integer映射为String 只要写成HashTableInteger Stringh=new HashTableInteger String() h get(new Integer( ))返回value 果然很方便 自动解包装与自动包装的功能 从上面有没有看到有点别扭啊 h get(new Integer( ))这里的new Integer( ) 好烦的 在JDK 之前我们只能忍着了 现在这种问题已经解决了 请看下面这个方法 我们传入一个int这一基本型别 然后再将i的值直接添加到List中 其实List是不能储存基本型别的 List中应该存储对象 这里编译器将int包装成Integer 然后添加到List中去 接着我们用List get( ) 来检索数据 并返回对象再将对象解包装成int 恩 JDK 给我们带来更多方便与安全 //Code list public void autoBoxingUnboxing(int i) { ArrayListIntegerL= new ArrayListInteger() L add(i) int a = L get( ) System out println( The value of i is + a) } 限制泛型中类型参数的范围 也许你已经发现在code list 中的TestGenK V这个泛型类 其中K V可以是任意的型别 也许你有时候呢想限定一下K和V当然范围 怎么做呢?看看如下的代码 //Code list class TestGen K extents String V extends Number { private V v=null; private K k=null; public void setV(V v){ this v=v; } public V getV(){ return this v; } public void setK(K k){ this k=k; } public V getK(){ return this k; } public static void main(String[] args) { TestGen String Integert =new TestGen String Integer() t setK(new String( String )) t setV(new Integer( )) System out println(t getK()) System out println(t getV()) } } 上边K的范围是=String V的范围是=Number 注意是 = 对于K可以是String的 V当然也可以是Number 也可以是Integer Float Double Byte等 看看下图也许能直观些请看上图A是上图类中的基类 A A 分别是A的子类 A 有 个子类分别是A _ A _ 然后我们定义一个受限的泛型类class MyGenE extends A 这个泛型的范围就是上图中兰色部分 这个是单一的限制 你也可以对型别多重限制 如下 class CT extends Comparable? super T Serializable 我们来分析以下这句 T extends Comparable这个是对上限的限制 Comparablesuper T这个是下限的限制 Serializable是第 个上限 一个指定的类型参数可以具有一个或多个上限 具有多重限制的类型参数可以用于访问它的每个限制的方法和域 lishixinzhi/Article/program/Java/hx/201311/25837
java 泛型对象能实例化吗T t=new T()
java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了
泛型反射的关键是获取ParameterizedType,再调用它的getActualTypeArguments()方法获得实际绑定的类型。但注意public class BookManagerBook是不能被反射的,因为擦拭法的缘故。只有在Superclass 或者成员变量(Field.getGenericType())等有函数返回ParameterizedType的时候才能成功反射,
你要么搞个构造函数把参数类型传进去才行
java的泛型类怎么实例化对象?
public class TestE{
public static void main(String args[]){
TestString test=new TestString();
}
}
主要是你实例化的时候E要能确定下来,或者说要让编译器知道它转能成什么。比如这种方式也是可以的
public static T void run(ClassT clazz) {
TestT test = new TestT();
}
程序在运行的时候T类型就能定下来,所以它也能new出来
java泛型的问题 一个泛型类 如果要实例化他 肯定是这样创建对象 Class c = new Class
虽然是泛型的,但你也可以不指定具体的类型,如果你不指定具体类型,默认可以使用任何类型(但基本类型除外),只不过不指定具体类型,会造成数据不一致性,因此在开发时为了便于数据的操作,通常指定具体类型。
Java 泛型参数如何实例化
请看下面代码:
private T void content(T type) { if (null == type) { // TODO 若type为空实例化一个对象 } }
对于type为空时如何进行实例化?实例化后才可以使用他的属性和方法。
经以次周折,泛型自身不能实例化,后来我使用类的反射解决此问题。
java 泛型数组怎么实例化
思路:
1 获取泛型的实际类型;
2 调用构造方法 进行实例化;
关于java泛型类实例化和java 类泛型的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-28,除非注明,否则均为
原创文章,转载请注明出处。