Java 泛型初步介绍//进程的控制

Java泛型

Java泛型的主要目的是可以建立具有类型安全的数据结构,如链表,散列表,等数据结构其重要的一个优点就是,在使用这些泛型类建立的数据结构时,不必进行强制类型转换,即不要求进行运行时类型检查.

泛型类

为了和普通类有所区别,通常都是使用"class名称<泛型列表>"声明一个类

class People<E>	//声明一个泛型类

其中People是泛型类的名称,E因为没有指明是那种类型,所以E可以是任何类或接口,但不能是基本数据类型
泛型类的类体和普通类体完全相似,由成员变量和成员方法组成
例如

public class Cone<E> {  //创建一个泛型类
    double height;
    E bottom;
    public Cone(E b) {   //构造方法,将E的类型b传给bottom
        bottom = b;
    }
}

使用泛型类声明对象

和普通类相比泛型类声明和创建对象时类名后多了一对<>,而且要用具体类型替换<>中的泛型

  • 使用具体类型
Cone<ConcreteObject> object = new Cone<ConcreteObject>(concrete)//意思是<>内只能是ConcreteObject类型的类
  • 使用通配符"?"
Cone<? extends Father> man = new Cone<Son>(son) //意思就是<>内只能是Father的子类
Cone<? super Son> man = new Cone<Father>(father)//意思是<>内只能是Son的父类或者自身
Cone<?> man = new Cone<Man>(man)//意思是<>内没有限制

具体的例子

public class Cone<E> {  //创建一个泛型类
    double height;
    E bottom;
    public Cone(E b) {   //构造方法,将E的类型b传给bottom
        bottom = b;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public double getVolume(){
        double area = Double.parseDouble(bottom.toString());	//泛型类变量只能调用继承或重写的方法
        return height*area;
    }
}
class Rect {
    double sideA;
    double sideB;
    Rect(double sideA, double sideB, double sideC) {
        this.sideA = sideA;
        this.sideB = sideB;
    }
    @Override
    public String toString() {  //重写toString方法
        double area = sideA * sideB;
        return "" + area;
    }
}
public class Example13_1 {
    public static void main(String[] args) {
        Cone<?> cone = new Cone<Rect>(new Rect(10, 10, 10));  //<?>表示没有限制具体什么类型
        System.out.println("底面积是" + cone.bottom);    //因为重写了toString方法,所以直接显示面积
        cone.setHeight(10); //设置高
        System.out.println("体积是" + cone.getVolume());
    }
}

运行结果

D:\HelloWorld\out\production\HelloJava Chapter_13.Part_1.Example13_1
底面积是100.0
体积是1000.0

进程已结束,退出代码 0

泛型类可以使用泛型接口

可以使用interface名称<泛型列表>声明一个接口,这样声明接口称为泛型接口

interface Computer<E>	//声明一个泛型接口

具体例子

interface Computer<E,F>{    //泛型接口
    public abstract void makeChorus(E e,F f);   //抽象方法

}
class Chorus<E,F>implements Computer<E,F>{  //泛型类实现了泛型接口
    @Override
    public void makeChorus(E e, F f) {  //带泛型类型变量
        e.toString();
        f.toString();
    }
}
class Singer{
    @Override
    public String toString() {  //重写toString方法
        System.out.println("我和你,心连心,同住地球村");
        return "";
    }
}
class Music{
    @Override
    public String toString() {  //重写toString方法
        System.out.println("|4 2 3-|2 3 6-|5 2 _2 2|");
        return "";
    }
}
public class Example13_2 {
    public static void main(String[] args) {
        Chorus<Singer,Music> chorus = new Chorus<Singer,Music>();   //<>指定了哪种类型
        chorus.makeChorus(new Singer(),new Music());
    }
}

运行结果

D:\HelloWorld\out\production\HelloJava Chapter_13.Part_1.Example13_2
我和你,心连心,同住地球村
|4 2 3-|2 3 6-|5 2 _2 2|

进程已结束,退出代码 0

值得注意的是

//泛型变量只能调用从Object类继承或重写的方法

进程的控制

进程的控制机构是由操作系统内核实现的

  • 支撑功能
    1.中断处理 //操作系统的各种重要活动最终都依赖于中断
    2.时钟管理 //操作系统的许多活动都要用到时钟管理
    3.原语操作 //内核在执行某些基本操作时,往往是通过原语操作进行的

  • 资源管理功能
    1.进程管理
    2.存储器管理
    3.设备管理

CET4P180

  • butterfly
  • rocket
  • charge
  • internal
  • criticize
  • dump
  • installation
  • dispute
  • disorder
  • dessert
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值