在java中,可以声明一个接受两个或多个类型参数的泛型类。这些参数指定为以逗号分隔的列表。
例如,twogen 泛型类接受两个类型参数:
class twogen<t, v> { t ob1; v ob2; // construtor que recebe objetos de tipos t e v twogen(t o1, v o2) { ob1 = o1; ob2 = o2; } // exibe os tipos de t e v void showtypes() { system.out.println("type of t is " + ob1.getclass().getname()); system.out.println("type of v is " + ob2.getclass().getname()); } t getob1() { return ob1; } v getob2() { return ob2; } }
使用示例: 该类可以与不同类型一起使用,如下所示:
twogen<integer, string> tgobj = new twogen<>(88, "generics"); tgobj.showtypes(); // exibe os tipos de t e v int v = tgobj.getob1(); system.out.println("value: " + v); string str = tgobj.getob2(); system.out.println("value: " + str);
示例输出:
type of t is java.lang.integer type of v is java.lang.string value: 88 value: generics
重要提示:
声明 twogen 时,创建实例时必须传递两个类型参数,如下例所示:
twogen<integer, string> tgobj = new twogen<>(88, "generics");
这里,t 被替换为 integer,v 被替换为 string。
类型参数可以相同:
twogen<string, string> x = new twogen<>("a", "b");
在本例中,t 和 v 都是 string 类型。
声明泛型类的一般形式:
class nomeclasse<parâmetrostipo> { // implementação }
创建通用实例的一般方法:
NomeClasse<ArgumentosTipo> nomeVariavel = new NomeClasse<>(ArgumentosConstrutor);
以上就是具有两个类型参数的泛型类的详细内容,更多请关注图灵教育其它相关文章!