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

2021-01-10 15:35:52 字数 5286 阅读 7105

1楼:綉乞群群

首先你要明白:

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

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

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

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

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

java泛型有什么作用

2楼:硪丨暧恋

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%的内容。

3楼:匿名用户

采用泛型可以减少你对数据类型的要求,需要什么类型再强转成什么类型

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

4楼:匿名用户

举个例子来说

你的钱包里你规定只装钱

那么你去出来的想

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

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

5楼:匿名用户

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

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

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

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

6楼:匿名用户

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

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

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

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

7楼:百度用户

首先你要明白:

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

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

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

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

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

8楼:匿名用户

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

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

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

9楼:匿名用户

在用集合类的时候

不用泛型我就不舒服……

10楼:匿名用户

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

11楼:匿名用户

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

对java泛型的作用还是不太理解?

12楼:幽冥神者

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

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

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

13楼:匿名用户

简单说吧,你自己向list里面放数据,先放a,再放b,又放c,ok,等你下次再调用的时候还回记得里面的数据是什么吗,怎么排序的,强转会成功吗?或者别人用你的数据,难道要跑过来问你吗?所以,用泛型约束类型,这样大家都一清二楚,我这个list只能放a,你得到永远都是a

14楼:刘杰

我感觉就是你以后可能用到的值的类型不确定。

java泛型有什么用?

15楼:张艳歌

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

arraylistarr=newarraylist();这样就创建了一个包含整数的arraylist对象。如果要自己定义泛型类,就用如下形式:clas**ycollection{}尖括号中的类型可以有限制,例如你需要让mycollection中的类型都具有可比性,可以用如下格式:

clas**ycollection{}此外,要注意泛型的一些特性:1.不能直接创建泛型数组。

如newarraylist[5]之类的是错的。只能用如下方法:newarraylist[5]或者(arraylist)newarraylist[5];2.

静态方法中需要小心,因为e一般是非静态类型,如果你这样写:clas**ycollection}是错的。你只能把去掉。

java泛型的作用,举例说明!

16楼:匿名用户

简言之,泛型是为了避免类转换异常的发生,使程序操作更安全,举例:

1、声明泛

型:class point

public void setvar(t var)}2、使用point类将var的类型设置成整数public class test

}3、运行:60

分析:使用泛型强制类型为某类型,比如上面为integer,在使用setvar()方法时如果参数不是integer(如string),程序就会报错,提示输入非法。当然你认为也可以不用泛型,比如将point定义如下:

class point1

public void setvar(object var)}此时,test程序依然可以运行,但是如果将test改动如下:

public class test

}程序编写正常,不会报错,但到了运行才提示异常。而如果上面是应用泛型,在写下system.out.

println(p.getvar() * 2);直接就会在写程序时提示错误!

这样就达到了使用泛型的目的——避免类转换异常的发生,使程序操作更安全。

希望能帮到你!

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

1楼 gta小鸡 复用一个类或方法,使之可以用于不同的参数类型上。 2楼 l旧梦颜 listlist new arraylist 有了泛型,list里面可以装各种类型的对象,而不只是单一的 java里泛型有什么作用?我怎么觉得那个可写可不写 3楼 匿名用户 举个例子来说 你的钱包里你规定只装钱 那么...

园林水体有什么作用?可分为哪些类型

1楼 阳光起航 自然式水体 河 湖 溪 泉 瀑布等规则式水体 池 喷泉 水井 壁泉 跌水等 水是构成园林四大要素之一种 也是最活跃的一种 古人云 石令人古 水令人远 园以水活 水与其它园林要素一起 富有变化和创新 赋园林于生机 在中国古典园林和现代园林中 水的处理有明显不同 水体的变化 既创造了园林...

反思对我们有什么作用,至少写出,反思对我们有什么作用,至少写出三个?

1楼 暮静雨 无论是工作 学习还是日常生活,我们都要养成反思的好习惯。睡前15分钟,回忆一下当天发生的事和见过的人,反思自己的行为是否妥当,是否有浪费时间,是否比昨天有所进步。不断地深究自己,像医生一样,先检查出自己身上的缺点弱点,再一个个对症下药。 复盘会成为你自我提升路上最好的帮手。 2楼 阳光...