黑马程序员技术交流社区
标题:
关于泛型的问题
[打印本页]
作者:
heheka123
时间:
2014-4-9 10:08
标题:
关于泛型的问题
看毕老师的视频:讲的泛型方法都是没有返回值的;
class Demo
{
public <T> void show(T t){
System.out.println("show:"+t);
}
}
复制代码
如果我写一个有返回值的泛型方法, 应该怎么写呢?
作者:
苏伯亚
时间:
2014-4-9 11:00
本帖最后由 苏伯亚 于 2014-4-9 11:03 编辑
泛型方法:
是否拥返回值,与其所在的类是否泛型没有关系。要定义泛型方法,只需将泛型参数列表置于返回值前。
如:
public class ExampleA {
public <T> void f(T x)
{
System.out.println(x.getClass().getName());
}
public static void main(String[] args) {
ExampleA ea = new ExampleA();
ea.f(" ");
ea.f(10);
ea.f('a');
ea.f(ea);
}
}
输出结果:java.lang.String
java.lang.Integer
java.lang.Character
ExampleA
使用泛型方法时,不必指明参数类型,编译器会自己找出具体的类型。泛型方法除了定义不同,调用就像普通方法一样。
需要注意,一个static方法,无法访问泛型类的类型参数,所以,若要static方法需要使用泛型能力,必须使其成为泛型方法。
作者:
lren
时间:
2014-4-9 11:23
package heima.demo;
public class GenericsDemo {
public static void main(String[] args) {
String test = test("test");
System.out.println(test);
}
//定义带有返回值的泛型
public static <T> T test(T t) {
return t;
}
}
作者:
你好!默默
时间:
2014-4-10 16:59
static void Main(string[] args)
{
Say<string>("abc");
}
public static T Say<T>(string str)
{
T t1 = default(T);
t1 = (T)str;
return t1;
}
复制代码
作者:
linweiwen
时间:
2014-4-10 17:32
使用泛型只是为了提高安全性,
跟有没有返回值没有关系,
你的程序逻辑该有返回值就return,
难道JDK1.5之前,没有泛型,那些同样逻辑的程序怎么办?
理解泛型为什么出现就明白这个问题了。
作者:
caijunsong
时间:
2014-4-10 21:03
class Demo
{
public <T> T void show(T t){
T i;
i=t的运算表达式
System.out.println("show:"+t);
return i;
}
}
复制代码
作者:
王春蕾
时间:
2014-4-11 16:36
在方法体中return要返回的对象
作者:
天涯追梦
时间:
2014-4-12 15:42
有没有返回值和是不是泛型没有关系,如果该类或方法有返回值,那么把它写成泛型也有返回值。返回值只取决于类或方法本身。而泛型只是为了限定其类型,这样就可以在编译期防止将错误类型的对象放置到容器中。
例如:定义一个容器ArrayList,存放class Apple{}和class Orange{},用add()方法可以将Apple和Orange都放进这个容器,无论在编辑还是在运行都不会产生错误。但是当你在使用ArrayList的get()方法来取出你认为是Apple的对象时,你得到的知识Object的引用,必须将其强转成Apple,否则你就会得到语法的错误。在运行时,当你试图将Orange对象转为Apple时,你就会以前面提到的异常的形式得到一个错误。为了防止错误类型,所以可以定义泛型ArryList<Apple>。
好好理解下泛型。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2