JAVA——泛型类和泛型方法(静态方法泛型)

泛型类定义的泛型,在整个类中有效。如果被方法是用,那么

泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。

为了让不同的方法可以操作不同类型,而且类型还不确定。那么

可以将泛型定义在方法上。

泛型类

class Demo<T>
{
    public void show(T t)
    {
        System.out.println("show: "+t);
    }
    public void print(T t)
    {
        System.out.println("show: "+t);
    }
}
class GenericDemo4
{
    public static void main(String[] args)
    {
        Demo<Integer>d = new Demo<Integer>();
        d.show(new Integer(4));
        Demo<String>d1 = new Demo<String>();
        d1.print("haha");
    }
}

结果:

show: 4

show: haha

泛型方法

class Demo
{
    public <T> void show(T t)
    {
        System.out.println("show: "+t);
    }
    public <Q> void print(Q q)
    {
        System.out.println("print:"+q);
    }
}
class GenericDemo4
{
    public static void main(String[] args)
    {
        Demo d = new Demo();
        d.show("hello boy!");
        d.print("Alex i love you !");
    }
}

结果:

show: hello boy!

print:Alex i love you !

同时定义泛型类和泛型方法

class Demo<T>
{
    public void show(T t)
    {
        System.out.println("show: "+t);
    }
    public <Q> void print(Q q)
    {
        System.out.println("print:"+q);
    }
}
class GenericDemo4
{
    public static void main(String[] args)
    {
        Demo <String> d = new Demo<String>();
        d.show("hello boy!");
        d.print("Alex i love you !");
        d.print(5);
        d.print("heiei");

    }
}

结果:

show: hello boy!

print:Alex i love you !

print:5

print:heiei

特殊之处:

静态方法不可以访问类上定义的泛型

如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

class Demo<T>
{
    public void show(T t)
    {
        System.out.println("show: "+t);
    }
    public <Q> void print(Q q)
    {
        System.out.println("print:"+q);
    }

    public static <W>void method(W t)
    {
        System.out.println("method: "+t);
    }
}

class GenericDemo4
{
    public static void main(String[] args)
    {
        Demo <String> d = new Demo<String>();
        d.show("hello boy!");
        d.print("Alex i love you !");

        d.print(5);
        d.print("heiei");

        Demo.method("hihi");

    }
}

结果:

show: hello boy!

print:Alex i love you !

print:5

print:heiei

method: hihi

泛型定义在接口上

interface Inter<T>
{
    void show(T t);
}

//第一种
class InterImpl implements Inter<String>
{
    public void show(String t)
    {
        System.out.println("show :"+t);
    }
}

/*第二种
class InterImpl<T>implements Inter<T>
{
    public void show(T t)
    {
        System.out.println("show :"+t);
    }
}
*/
class GenericDemo5
{
    public static void main(String[] args)
    {
        /*
        InterImpl<Integer> i = new InterImpl<Integer>();
        i.show(4);
        */
        InterImpl i = new InterImpl();
        i.show("haha");

    }
}

结果:

show :haha

第一种相对来说就比较死,固定为String类型了。而第二种可以自己定义。

时间: 2024-08-29 12:21:22

JAVA——泛型类和泛型方法(静态方法泛型)的相关文章

泛型类、泛型方法及泛型应用

泛型类.泛型方法及泛型应用 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Java语言引入泛型的好处是安全简单. 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的"任意化","任意化"带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的.对于强制

转:C# 泛型编程之泛型类、泛型方法、泛型约束

C# 泛型编程之泛型类.泛型方法.泛型约束 分类: asp.net c#2012-08-07 17:36 5998人阅读 评论(0) 收藏 举报 c#编程classobject编译器struct 泛型方法 在C#2.0中,方法可以定义特定于其执行范围的泛型参数,如下所示: public class MyClass<T>    {        //指定MyMethod方法用以执行类型为X的参数        public void MyMethod<X>(X x)         

C# 泛型编程之泛型类、泛型方法、泛型约束

所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型. 泛型编程是一种编程范式,它利用"参数化类型"将类型抽象化,从而实现更为灵活的复用.在定义泛型类时,在对客户端代码能够在实例化类时,可以用类型参数的类型种类施加限制. 泛型方法 在C# 2.0中,方法可以定义特定于其执行范围的泛型参数,如下所示: public class MyClass<T> { //指定MyMethod方法用以执行类型为X的参数 public void MyMethod<X>(X

Java泛型类和泛型方法

java编程思想说道: 泛型类是应用在整个类上,但同时可以在类中包含参数化方法,而这个方法所在的类可以是泛型,也可以不是泛型,也就是说是否有泛型方法,与其所在的类是否是泛型类没有关系. 泛型方法是的该方法可以能够独立于类而产生变化,一下是一个基本的指导原则:无论合适,只要你能做到,你就应该尽量使用泛型方法,也就是说,如果使用泛型发放可以取代将整个类泛型化,那么就应该只使用泛型方法,因为它可以使事情更加清楚明白.另外,对于一个static的方法而言,无法访问泛型化的类型参数,所有,如果static

JAVA 泛型方法 和 静态方法泛型

[java] view plaincopy /* //  泛型方法和静态方法泛型 泛型类定义的泛型 在整个类中有效 如果被方法使用 那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定 为了让不同方法可以操作不同类型  而且类型还不确定 那么可以将泛型定义在方法上 静态方法泛型: 静态方法不可以访问类上定义的泛型 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上 */ class Demo<T> { public void method(T t) { System.o

JAVA 泛型方法与静态方法泛型

/* 复习备用: 泛型方法和静态方法泛型 泛型类定义的泛型 在整个类中有效 如果被方法使用 那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定 为了让不同方法可以操作不同类型 而且类型还不确定 那么可以将泛型定义在方法上 静态方法泛型: 静态方法不可以访问类上定义的泛型 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上 */ class Demo<T> { public void method(T t) { System.out.println("meth

泛型类定义和泛型方法以及泛型限定

1.泛型类定义的泛型,在整个类中有效.如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了. 2.为了让不同方法可以操作不同类型,而且类型还不确定.那么可以将泛型定义在方法上. 3.特殊之处: 静态方法不可以访问类上定义的泛型. 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上. package tan; //定义泛型类(要操作的类型不确定) class Demo<T>{ public void show(T t){ System.out.print

黑马程序员——Java集合工具类和泛型

Collections工具类和泛型 Collections和Collection Collections和Collection是不同的,Collections是工具类,用来操作集合的,而Collection是集合接口.Collections中有一系列的静态方法用来操作集合,但是不能更改集合内容.比如不能set()不能remove()元素,可以替换全部元素或者添加同一个元素. static List<String> list =Arrays .asList("one Two three

java夯实基础系列:泛型

一.概念 1.为什么需要泛型? 不使用泛型时: public class Test01 { public static void main(String[] args) { HashMap map = new HashMap(); map.put("m1", "sssss"); String str = (String)map.get("m1"); } } 使用泛型后: public class Test01 { public static vo