哈工大软件构造-对于able接口的总结

本文深入探讨Java中的关键概念,包括异常处理、比较器、迭代器和观察者模式。详细解析了异常的分类与处理,比较器与迭代器的实现原理,以及观察者模式的设计与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

able接口

Throwable

1.error

由外部原因导致,程序员无能为力,大多是设备原因,比如未联网

2.Exception

①RuntimeException
属于unchecked异常(之静态检查不会检查),在编译器运行时检查,属于程序员认为错误,须要对代码进行改正
例如:数组越界,空指针问题,除0异常
②其他异常
属于checked异常,由于外部原因导致,可以预测并补救,如果没有try…catch异常或throws异常,在静态检查阶段会报错。
例如:文件未找到,用户输入非法
注:我们通常的自定义类都继承自Exception,而不是RuntimeException

Comparable比较器

Comparable是java提供的接口,源码如下:

package java.lang;
import java.util.*;

package java.lang;
public interface Comparable<T> {
    public int compareTo(T o);
}

运用delegation,将需要与this比较的类作为参数传递进compareTo中,例如:

package try1;
import java.util.*;

public class try2 implements Comparable<try2>{
	int i;
	public int compareTo(try2 t) {
		if(this.i>t.i) return 1;
		if(this.i<t.i) return -1;
		else return 0;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}

}

注:注意用List.sort时,返回的数字是固定的1,-1,0;
在类中直接调用即可
顺便谈一下另一个接口,Comparator

package java.util;

import java.io.Serializable;
import java.util.function.Function;
import java.util.function.ToIntFunction;
import java.util.function.ToLongFunction;
import java.util.function.ToDoubleFunction;
import java.util.Comparators;

public interface Comparator<T> {
	int compare(T o1, T o2);
	//还有很多其他方法...
}

Comparater同样利用delegation,将本身作为参数传进Collections.sort,并将两个被排序类作为参数传入内部方法compare,此实现方法类似于进程的创建。

Collections.sort(list, new Comparator<被排序类>() {
            @Override
            public int compare(被排序类 o1, 被排序类 o2) {
                return  o1.get() > o2.get() ? 1 : (o1.get() == o2.get() ? 0 : -1);
            }
        });
        

Iterable迭代器

Interable是Java中的迭代器接口,iterator为Java中的迭代器对象,是能够对List这样的集合进行迭代遍历的底层依赖。而iterable接口里定义了返回iterator的方法,相当于对iterator的封装,同时实现了iterable接口的类可以支持for each循环。这里用到了两颗继承树间的delegation。
我们自己定义的iterator实例如下:

import java.util.*;
public class try3 implements Iterable<String>{
	public Iterator<String> iterator() {
		return new try3Iterator();
	}
}
class try3Iterator implements Iterator<String>{
	public boolean hasNext() {
		return true;
	}
	public String next() {
		return "sss";
	}
}

Observable观察者模式

运用双向delegation,一对多的对应形式,可以类比为明星与粉丝之间的关系。明星中位置一个“我的粉丝”的对象列表,而粉丝中维持一个“我的爱豆”对象。
二者之间存在双向联系,新创建粉丝对象会在明星那备案。而明星更新状态会通知所有粉丝。

public class Fan {
	private final Star s;
	private String starstate;
	public Fan(Star s) {
		this.s=s;
		s.newfan(this);
		this.starstate=s.getstate();
	}
	public void newfan(Fan f) {
		fans.add(f);
	}
	public void SetState(String newstate) {
		starstate=newstate;
	}
}

import java.util.List;
import java.util.ArrayList;
public class Star {
	private final List<Fan> fans=new ArrayList<>();
	private String state;
	public void changstate(String newstate) {
		state=newstate;
		for(Fan f:fans) {
			f.SetState(newstate);
		}
	}
	public String getstate() {
		return state;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值