`
quickselect
  • 浏览: 36474 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

请帮忙看一下这几个关于泛型的问题

 
阅读更多
1.普通集合类是不是可以直接转换为泛型的集合类? 好象是可以,因为以下代码可以正常运行
public static void main(String[] args) {
    List<String> ls = new ArrayList();
    ls.add("str1");
    ls.add("str2");
    ls.add("str3");
    for (String string : ls) {
	System.out.println(string);
  }
}


2.以下代码中public后的那个<T>作何解释,好象去掉也是可以运行的。
public <T> List<T> getAll(Class<T> entityClass) {
   return getHibernateTemplate().loadAll(entityClass);
}


3.为什么ls不过赋给lo,String是Object的子类啊
  List<Object> lo = new ArrayList<Object>();	
  List<String> ls = new ArrayList<String>();
  lo = ls;//<---此外语法编译不过	



  
 
分享到:
评论
2 楼 forfail 2007-04-05  
问题 3:
泛型不是协变的(covariant),数组是协变的。
1 楼 raykcn 2007-03-11  
问题1
我感觉是Object 和 String 转换的问题
首先你用了for (String string : ls) {...} 当然没问题
可是如果 String str = list.get(index); 方式呢 ?

传统代码 :
public static void main(String[] args) {   
    List ls = new ArrayList();   
    ls.add("str1");   
    ls.add("str2");   
    ls.add("str3");   
    String st= (String)list.get(1); //此处必须强制转换.
    System.out.println(st);  
}

但是用了泛型之后呢...
public static void main(String[] args) {   
    List<String> ls = new ArrayList();   
    ls.add("str1");   
    ls.add("str2");   
    ls.add("str3");   
    String st= list.get(1); //这里就不用强制转换了.
    System.out.println(st);  
}


问题2
<T> 只不过是个类型参数.
怎么说呢,类似于方法中的 引数,只是抽象的定义. 传什么就是什么. 如List<T>传String后就变为 List<String>.

关注 问题3 ......!

相关推荐

    java 一个关于泛型的简单例子

    此外,文件名`Java.jpg`可能表示的是一个与这个泛型例子相关的图片,可能是一个截图或者示意图,用于帮助理解泛型的概念或者`MyFirstGeneric`类的结构和用法。在实际学习过程中,视觉辅助工具往往能够帮助我们更好地...

    C#泛型类、泛型方法、泛型接口、泛型委托的实例

    这个类可以存储任何类型的对象,但具体类型在实例化时确定。这样做的好处是,我们无需为每种可能的数据类型创建单独的类,从而提高了代码的复用性。 ```csharp public class GenericContainer { private T value; ...

    泛型dao 泛型dao 泛型dao

    当应用中需要使用到上十张表时,DAO的维护变得日益困难,主要表现在这几个方面: 1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名和方法名) 2)dao接口需要维护的method庞大。 3)业务逻辑...

    关于java基础的泛型的练习

    Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和可读性。泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的...

    java 带两个类型参数的泛型

    当我们谈论“java带两个类型参数的泛型”时,这意味着我们正在处理一个泛型类或泛型方法,它们接受不止一个类型作为参数。这样的设计可以让我们在不同数据类型之间建立更复杂的关联,同时保持类型安全。 首先,让...

    关于java的泛型.doc

    关于Java的泛型,这是Java 5.0版本引入的一项重大特性,旨在提供类型安全的集合操作,并增强代码的重用性和灵活性。泛型允许程序员在设计类或接口时使用类型参数,使得类或接口可以处理任何数据类型,而不必为每种...

    关于C#、java泛型的看法

    在编程世界中,C#和Java都是广泛应用的高级编程语言,它们都支持泛型这一强大的特性,以提高代码的类型安全性和重用性。本文将深入探讨C#和Java在泛型实现上的异同,帮助开发者更好地理解和利用这两种语言的泛型功能...

    泛型学习和泛型接口和泛型经典示例

    泛型学习和泛型接口和泛型经典示例

    JAVA-泛型课件-泛型课件

    泛型的关键在于类型参数化,这意味着可以将操作的数据类型指定为一个参数。泛型的类型参数可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。 ### 泛型类 泛型类是指在定义类的时候引入类型...

    3个泛型项目源码.rar

    这个"3个泛型项目源码.rar"压缩包包含的三个项目,无疑为学习和理解泛型在实际项目中的应用提供了宝贵的资源。 泛型是C# 2.0引入的新特性,它允许开发者创建可以操作多种数据类型的类、接口和方法。这样做的好处...

    java泛型指南 经典

    Java 泛型的一个重要特性是类型擦除,这意味着在编译之后,所有的泛型信息都会被擦除。因此,在运行时,所有泛型类型看起来都像是它们的基础类型。例如,`List&lt;Integer&gt;` 和 `List&lt;String&gt;` 在运行时都表现为 `List`...

    C#泛型实例Demo

    在C#中,泛型主要体现在以下几个方面:泛型类、泛型接口、泛型方法、泛型委托以及泛型集合。 1. **泛型类**:泛型类是在声明类时定义一个或多个类型参数。例如,`List&lt;T&gt;` 就是一个典型的泛型类,其中 `T` 是类型...

    C#中的泛型集合

    在C#编程中,泛型集合是一个非常重要的概念,它为开发者提供了强大的工具来处理不同类型的数据,同时保持代码的灵活性和效率。泛型是.NET框架引入的一种特性,它允许我们创建可重用的类型安全的代码,适用于多种数据...

    【Flutter】Dart 泛型 ( 泛型类 泛型方法 特定类型约束的泛型 ).zip

    【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 ) https://hanshuliang.blog.csdn.net/article/details/114059611 博客源码快照

    泛型java的泛型知识,非常有用

    这意味着在运行时,泛型类和非泛型类没有区别,所有的类型参数都被替换为其边界类型(通常是 `Object`)。 6. **边界类型** - 类型参数可以指定边界,如 `List&lt;? extends Number&gt;`,表示 `T` 是 `Number` 或其子类...

    VC++ 2005:泛型编程

    编译时泛型类似于C++中的模板,通过编译时实例化来处理不同类型,而CLI泛型则在运行时进行实例化,这使得泛型类型的实例化延迟到JIT编译阶段,从而避免了可能的代码膨胀问题,并且提供了丰富的元数据用于反射。...

    泛型笔记学习2009

    泛型是Java语言的一个重要特性,它主要解决了在集合框架中频繁出现的类型转换问题,同时也增强了类型安全性。泛型的概念最早出现在Java 5.0版本中,它允许开发者创建能够以类型参数化的类、接口和方法。 #### 泛型...

    C#泛型集合与非泛型集合

    为了更好地理解泛型集合与非泛型集合之间的差异,我们来看一个具体的例子。假设我们需要创建一个集合来存储整数。 ##### 非泛型集合示例 ```csharp ArrayList numbers = new ArrayList(); numbers.Add(22); ...

    C#泛型接口实例

    在这个例子中,`IMyGenericInterface`是一个泛型接口,`Process`方法接受一个类型为`T`的参数。 2. 实现泛型接口:类或结构体可以通过指定具体的类型参数来实现泛型接口。例如: ```csharp public class MyClass :...

Global site tag (gtag.js) - Google Analytics