java+构造泛型对象_Java面向对象:泛型

泛型类示例

class Point{

private T x;

private T y;

public T getX() {

return x;

}

public void setX(T x) {

this.x = x;

}

public T getY() {

return y;

}

public void setY(T y) {

this.y = y;

}

}

public class test3 {

public static void main(String[] args) {

//T可以使int等类型

Point p = new Point();

p.setX("X坐标:100");

p.setY("y坐标:200");

System.out.println(p.getX() +"   " + p.getY());

}

}

构造方法中使用泛型类

构造方法能为类中的属性初始化(从构造方法传入属性值),那么如果类中的属性通过泛型指定,而又需要通过构造方法设置属性内容的时候,那么构造方法的定义与之前并无不同,不需要想声明类那样指定泛型。

package fanxingDemo;

class Con1{

private T value;

//构造方法传入value值

public Con1(T value){

this.value = value;

}

public T getValue() {

return value;

}

public void setValue(T value) {

this.value = value;

}

}

public class GenerateDemo02 {

public static void main(String[] args) {

// TODO Auto-generated method stub

Con1 cString = new Con1("构造方法中使用泛型");

System.out.println("hello" + cString.getValue());

}

}

指定多个泛型类

设置多个泛型直接在<>中添加多个泛型就可以了

package fanxingDemo;

//指定多个泛型,并且从泛型的构造方法传递属性值

class Gen{

private T name;

private K age;

public Gen(T name,K age){

this.name = name;

this.age = age;

}

public T getName() {

return name;

}

public void setName(T name) {

this.name = name;

}

public K getAge() {

return age;

}

public void setAge(K age) {

this.age = age;

}

}

public class GenerateDemo02 {

public static void main(String[] args) {

// TODO Auto-generated method stub

Gen g = new Gen("张三",25);

System.out.println(g.getName() + g.getAge());

}

}

通配符的使用

当函数传入泛型类型不确定是,使用?代替类型,不论什么类型都能执行。

package fanxingDemo;

class Infor{

private T key;

public Infor(T value){

this.key = value;

}

public T getKey() {

return key;

}

public void setKey(T key) {

this.key = key;

}

}

public class GenerateDemo02 {

public static void main(String[] args) {

// TODO Auto-generated method stub

Infor sInfor = new Infor("String");

call(sInfor);

System.out.println();

}

//传入Infor泛型时不确定使用的类型,此时可以使用?来代替

public static void call(Infor> i) {

System.out.println(i.getKey());

}

}

泛型接口

之前讲的都是泛型类,现在介绍泛型接口

package fanxingDemo;

//泛型+抽象接口

interface GenInter{

public static final Object NAME = "极客学院";

public abstract void tell();

}

class Gen implements GenInter{

private T info;

public Gen(T infor){

this.info = infor;

}

public T getInfo() {

return info;

}

public void setInfo(T info) {

this.info = info;

}

@Override

public void tell() {

// TODO Auto-generated method stub

}

}

public class GenerateDemo02 {

public static void main(String[] args) {

// TODO Auto-generated method stub

Gen g = new Gen("你好!");

System.out.println(g.getInfo() + GenInter.NAME);

}

}

泛型方法

泛型方法中可以定义泛型参数,此时,参数的类型就是传入的数据类型。

public class GenerateDemo02 {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(call("极客学院"));

}

//泛型方法,注意T这种格式第一个指定那个字母是泛型,第二个T指返回类型。

public static T call(T value){

return value;

}

}

泛型数组

使用泛型方法的时候,也可以传递或返回一个泛型数组。

public class GenerateDemo02 {

public static void main(String[] args) {

// TODO Auto-generated method stub

String[] str = {"第一个","第二个","第三个"};

System.out.println(call(str));

Integer[] i = {1,2,3,4,5};

System.out.println(call(i));

}

//泛型数组,返回string类型

public static String call(T arr[]){

for(int i = 0; i 

System.out.println(arr[i]);

return "成功返回!";

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值