自定义泛型类

1 当实例化泛型类的对象时,指明泛型类的类型。指明之后,对应的类中所有使用泛型的位置,都变为实例化中指定的泛型的类型

2 如果我们自定义了泛型类,但是在实例化时没有使用,那么默认类型是Object类的。

package lianxi3;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
//自定义泛型类
public class Order<T> {

    private int orderId;
    private String orderName;
    private T t;
    List<T> list = new ArrayList<T>();
    //声明泛型类的方法
    public <E>E getE(E e){
        return e;
    }
    //实现数组到集合的复制
    public <E>List fromArrtoList(E[]e,List<E> list1){
        for(E e1:e){
            list1.add(e1);
        }
        return list1;
    }
    public void add(){
        list.add(t);
    }
    public int getOrderId() {
        return orderId;
    }

    public void setOrderId(int orderId) {
        this.orderId = orderId;
    }

    public String getOrderName() {
        return orderName;
    }

    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

    @Override
    public String toString() {
        return "Order [orderId=" + orderId + ", orderName=" + orderName
                + ", t=" + t + "]";
    }

}
//1.class SubOrder<T> extends Order<T>{
class SubOrder extends Order<Boolean>{

}
@Test //自定义泛型类的使用
    public void test3(){
        Order<String> o1 = new Order<String>();
        o1.setOrderId(32);
        o1.setOrderName("fas");
        o1.setT("tt");
        System.out.println(o1);
        o1.add();
        //List<String> list1 = o1.list; //o1中的list存放的是String类型的数据
        System.out.println(o1.list); //或是System.out.println(list1);
        //声明泛型类的方法
        Integer i1 = o1.getE(789);
        System.out.println("i1="+i1);

        //1.SubOrder<Boolean> so = new SubOrder<Boolean>();
        SubOrder so = new SubOrder();
        so.setOrderId(34);
        so.setT(true);
        so.add();
        so.setT(true);
        so.add();
        so.setT(false);
        so.add();
        System.out.println(so.list);
    //实现数组到集合的复制
        Integer[] in = new Integer[]{3,5,6};
        List<Integer> list1 = new ArrayList<Integer>();
        o1.fromArrtoList(in, list1);
        System.out.println(list1);

    }

结果:

Order [orderId=32, orderName=fas, t=tt]

[tt]

i1=789

[true, true, false]

[3, 5, 6]

时间: 2024-11-09 04:38:11

自定义泛型类的相关文章

.net基础扫盲-自定义泛型类

C#自定义泛型类用得最广泛,就是集合(Collection)中.实际上,泛型的产生其中一个原因就是为了解决原来集合类中元素的装箱和拆箱问题(如果对装箱和拆箱概念不明,请百度搜索).由于泛型的使用,使得集合内所有元素都属于同一类,这就把类型不同的隐患消灭在编译阶段--如果类型不对,则编译错误. 这里只讨论C#自定义泛型类. 基本自定义如下: public class MyGeneric < T> { private T member; public void Method (T obj) { }

自定义泛型类,本质就是利用微软提供的集合和集合接口

//实现IEnumerable<A>接口中的GetEnumerator()方法,为了能支持foreach遍历    class MyClass<A>:IEnumerable<A>    {        List<A> list = new List<A>(); private List<A> items;        public List<A> Items        {            get { retu

C# 中自定义泛型类的示例

一.自定义泛型类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSharpOOP_Lesson4 { /// <summary> /// 下拉框类 /// </summary> public class CompBox<T> { public string Item

JAVASE(十五) 泛型 :泛型用例、自定义泛型类、通配符

1.泛型在集合中的使用 1.1 在集合中使用泛型之前的例子 ? 为什么要有泛型(Generic)? 1. 解决元素存储的安全性问题2. 解决获取数据元素时,需要类型强转的问题 ? ? 1.2 在集合中使用泛型例子1 List<String> list = new ArrayList<String>(); list.add("aaaa"); List<Integer> list2 = new ArrayList<Integer>(); li

c#中的自定义泛型类、泛型方法和泛型接口

?    泛型的产生其中一个原因就是为了解决原来集合类中元素的装箱和拆箱问题: 一.泛型类: /// <summary> /// 返回前台的消息 /// </summary> /// <typeparam name="T"></typeparam> public class YZT_Message<T> { private int m_Request_Type = 1; // 返回前台的成功错误类型:1:成功(默认) 0:错误

42_自定义泛型类的应用

写一个泛型Dao来说明 package com.itcast.day2; /** * 泛型类型案例 * @author hp * * @param <T> */ public class GenericDao<T> { /** * 增加 * @param obj */ public void add(T obj){ } /** * 删除 * @param obj */ public void delete(T obj){ } /** * 删除 * @param id */ publ

GenericDemo2 泛型类的使用

/** *    泛型的前世今生(泛型类的使用) *    [学习结果]     1,了解泛型类,泛型方法,泛型接口的定义体现形式.     2,自定义泛型类,体会泛型前和泛型后的区别★★★★★ [目标:自定义泛型] 1,没有泛型之前,对于不确定的对象类型,是通过Object类型多态方式解决的.          弊端:当对象提升为Object后,需要向下转型才可以使用对象的内容.          而转型就会有运行发生ClassCastException异常的风险.    2,有了泛型后,将不

泛型类( 转载)

C#自定义泛型类用得最广泛的就是在集合(Collection)中.本文介绍了C#自定义泛型Generic的用法. AD:51CTO学院:IT精品课程在线看! Generic是Framework 2.0的新元素,中文名字称之为"泛型" ,特征是一个带有尖括号的类,比如List< T> C#自定义泛型类用得最广泛,就是集合(Collection)中.实际上,泛型的产生其中一个原因就是为了解决原来集合类中元素的装箱和拆箱问题(如果对装箱和拆箱概念不明,请百度搜索).由于泛型的使用

JAVA-初步认识-常用对象API(集合框架-泛型-泛型类)

一. 泛型我们了解完基本原理之后,除了在集合中用来传递参数类型外,还有其它的应用.它还能为我们提供很多设计上的便捷. 介绍一下以前和现在的定义方法,有什么不一样. 这里面为了方便于应用,搞了一个工具类,和主要的程序分开发. 对工具类的描述,现在要操作person,要用工具类对person对象进行操作,可以完成person对象的设置和获取. 这个工具类只能操作person,不能操作其它对象.如果想要其它对象,还要书写Tool1,Tool2......这样很麻烦,怎么办?(对传输进来的person对