请问,java泛型可以做什么,Java里泛型有什么作用?我怎么觉得那个可写可不写

2020-11-22 07:11:03 字数 5485 阅读 4033

1楼:gta小鸡

复用一个类或方法,使之可以用于不同的参数类型上。

2楼:l旧梦颜

listlist = new arraylist<>();

有了泛型,list里面可以装各种类型的对象,而不只是单一的

java里泛型有什么作用?我怎么觉得那个可写可不写

3楼:匿名用户

举个例子来说

你的钱包里你规定只装钱

那么你去出来的想

也不想就是钱,管他是¥还是$不用转换的-->都是钱(确定里面是什么)不用泛型的话 就不规定放什么

那么你取出来的东西就不一定是钱,这样你就要转换了,那要是石头的话你要转换成钱就错了(不确定里面到底是什么)

4楼:匿名用户

很多时候,尤其在使用对象的多态性的时候,你不知道进到你数据结构中的对象到底是什么类型的,执行的时候就会出问题。泛型就是限定一个数据结构,或者一个方法参数只允许传入什么类型的对象。

比如类a,类b,类c,b和c继承a。b中有属性abc,c中有属性def

定义一个没有泛型的list,这时候你可以随便往里存,但从list往外取的时候(假设取出的对象叫obj),你要调用abc就要先转型,这时候c的对象会异常……

没事多看看教程,多敲敲**,基本上练着练着也就会了,有一套动力节点301集java基础教程里面讲的很有趣也讲得很细致明了,建议你去看看。

5楼:匿名用户

泛型赋予了类型参数式多态

的能力泛型的第一个好处是编译时的严格类型检查。有效的避免了运行期的classcastexception,提高了程序的安全性和健壮性。

这是集合框架最重要的特点。此外,泛型消除了绝大多数的类型转换。如果没有泛型,当你使用集合框架时,你不得不进行类型转换。

另外 泛型简化了**,应用泛型的程序提高程序的可读性,更利于团队的合作开发。

6楼:百度用户

首先你要明白:

他给出的这个泛型,不是无意义的.

如果定义容器了list,如果你不定义他的泛型,那么他可以放不同类型的东西.

比如你定义了一个list,这样的话

他只可以存放整型的数据,一旦你想要放其他的类型的数据,他会包错.

所以这个泛型的目的就是是定义的容器所放的内容是一个统一的类型.

7楼:匿名用户

knightzhuwei 说的很正确 貌似也没什么好补充的。。。

简单点说 面向对象设计的最重要的目的之一 就是管理 泛型是管理中的一个比较常见的方法 假设

a,b继承了c 而d里面有个方法getc(c c) 那么 你想往这里传除c和他的子类之外其他参数的时候 必然是传不进去的 有效的提高了安全性 更明确了该方法的目的 这样就明白了吧?

8楼:匿名用户

在用集合类的时候

不用泛型我就不舒服……

9楼:匿名用户

泛型是java jdk1.5出的新功能。它主要是对同一种类型做的集合,有很多人说他不好用,但是sun既然提供了他就是让我们来用的,这样可以少些很多**。

10楼:匿名用户

http://****ibm.***/developerworks/**/java/j-djc02113/

java中的泛型具体能应用在哪些方面上?

11楼:匿名用户

泛型:规定了此集合中元素的类型。

例如:arraylistarr = new arraylist();

这样就创建了一个包含整数的 arraylist 对象。

如果要自己定义泛型类,就用如下形式:

class mycollection

尖括号中的类型可以有限制,例如你需要让 mycollection 中的类型都具有可比性,可以用如下格式:

class mycollection

此外,要注意泛型的一些特性:

1. 不能直接创建泛型数组。如 new arraylist[5] 之类的是错的。

只能用如下方法:new arraylist[5] 或者 (arraylist)new arraylist[5];

2. 静态方法中需要小心,因为 e 一般是非静态类型,如果你这样写:

class mycollection

}是错的。你只能把 去掉。

12楼:匿名用户

泛型本质上是提供类型的"类型参数",它们也被称为参数化类型(parameterized type)或参量多态(parametric polymorphi**)。其实泛型思想并不是 java 最先引入的,c++ 中的模板就是一个运用泛型的例子。

具体应用会在实际开发中领悟到的!

13楼:匿名用户

java已经基本摒弃泛型了,不推荐使用

java:泛型加上有什么用?

14楼:匿名用户

?是不确定类型,是虚的,但是是右边的

对象的类型或其子类,你可以理解问专

号?其实就是“who extends 右边对象.getcalss()”的意思属。下面是源**中的doc

这样的写法在编译之后也不能确定具体的类,只有等到jvm运行到这里的时候,才确定具体的对象类型,在声明一个变量类型时候可以泛型class xx,list xx,用问号来代替,这样写其实跟没写问号的编译结果是一样的。

但是定义一个泛型类的时候,就不能够用?,必须是一个具体类,用一个符号来表示,一般用t或者e。

如果用eclipse或者myeclipse,有事没事就多用ctrl + shift + t 来打开你想要看的type,可以找到class中的类型,eclipse会找到jdk中对应的源**,很方便。

java中泛型是什么意思,作用是什么?

15楼:匿名用户

syteigyo是一个类的名称。

syteigyolist是只包括syteigyo类类型的实例类对象的列表。

泛型这个东西,说白了就是型参,也就是说类型本身可以作为参数来对类的类型做辅助说明。

16楼:匿名用户

syteigyo<>里表示具体的类型 syteigyolist 是一个实例

list syteigyolist 或 syteigyo syteigyolist 这样写能看的懂了吧

以前1.5之气没有泛型 要实现上述只能list syteigyolist 然后 (syteigyo )syteigyolist 强制转换类型,这样既麻烦,而且在实际使用过程中还可能因为类型不匹配导致抛异常。有泛型后上述的list里实际包的就是syteigyo 的实例,而不是object,不用怕以后转类型抛异常了

17楼:匿名用户

java 泛型是java se 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

泛型(generic type 或者 generics)是对 java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。

可以在集合框架(collection framework)中看到泛型的动机。例如,map 类允许您向一个 map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 string)的对象。

因为 map.get() 被定义为返回 object,所以一般必须将 map.get() 的结果强制类型转换为期望的类型,如下面的**所示:

map m = new hashmap();

m.put("key", "blarg");

string s = (string) m.get("key");

要让程序通过编译,必须将 get() 的结果强制类型转换为 string,并且希望结果真的是一个 string。但是有可能某人已经在该映射中保存了不是 string 的东西,这样的话,上面的**将会抛出 classcastexception。

理想情况下,您可能会得出这样一个观点,即 m 是一个 map,它将 string 键映射到 string 值。这可以让您消除**中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。这就是泛型所做的工作。

泛型的好处

java 语言中引入泛型是一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了。

这带来了很多好处:

1,类型安全。 泛型的主要目标是提高 java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。

没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于**注释中)。

2,消除强制类型转换。 泛型的一个附带好处是,消除源**中的许多强制类型转换。这使得**更加可读,并且减少了出错机会。

3,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。

但是更多类型信息可用于编译器这一事实,为未来版本的 jvm 的优化带来可能。由于泛型的实现方式,支持泛型(几乎)不需要 jvm 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的**,只是更能确保类型安全而已。

java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高**的重用率。

泛型在使用中还有一些规则和限制:

1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。

2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。

3、泛型的类型参数可以有多个。

4、泛型的参数类型可以使用extends语句,例如。习惯上成为“有界类型”。

5、泛型的参数类型还可以是通配符类型。例如class classtype = class.forname(java.lang.string);

泛 型还有接口、方法等等,内容很多,需要花费一番功夫才能理解掌握并熟练应用。在此给出我曾经了解泛型时候写出的两个例子(根据看的印象写的),实现同样的 功能,一个使用了泛型,一个没有使用,通过对比,可以很快学会泛型的应用,学会这个基本上学会了泛型70%的内容。

18楼:匿名用户

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数;

你这里的泛型是将list中保存的类型 指定为 syteigyo ,这绝对是你系统中自定义的一个类,在list中使用一般是 javabean,也就是与想要获取数据对应的实体类。 syteigyolist 则是你的定义的list的 变量名,无其它意义。