关于Java通用方法(待补充)
程序员文章站
2022-05-12 16:35:33
...
通用方法
①Computable界面
Java的界面由关键字interface表示,它由若干常数(static final 数据成员)和若干方法头(无执行代码)组成,Computable界面定义如下:
public interface Computable{
/** @return this+x */
public Object add(Object x);
/** @return this-x */
public Object subtract(Object x);
/** @return this*x */
public Object multiply(Object x);
/** @return this/x */
public Object divide(Object x);
/** @return mod(this,x) */
public Object mod(Object x);
/** @return this+=x */
public Object increment(Object x);
/** @return this-=x */
public Object decrement(Object x);
/** @return () */
public Object zero(.);
/** @return 1 */
public Object identity();
}
下面的方法可用于计算一维整形**a[ ]**的前n个数之和:
public static int sum(int []a,int n){
int sum=0;
for(int i=0;i<n;i++)
sum+=a[i];
return sum;
}
利用Computable可以使方法sum通用化:
public static Computable sum(Computable []a,int n){
if(a.length==0) return null;
Cpmputable sum =(Computable) a[0].zero();
for(int i=0;i<n;i++)
sum.increment(a[i]);
return sum;
}
②java.lang.Comparable界面
此界面中唯一的方法头compareTo可用于比较两个元素的大小。
如:(返回a-b的符号)
java.lang.Comparable.x.compareTo(y)
x<y时返回-1
x=y返回0
x>y时返回1
③Operable界面
有些方法同时需要Computable和Comparable界面支持,为此定义Operable界面:
public interface Operable extends Computble,Comparable
{}
java中这种没有常数也没有方法头的界面称为标记界面。
④自定义包装类
由于Java的包装类(如Integer)已经定义为final型,无法再定义其子类作为进一步扩充,因此可以自定义包装类,如MyInteger:
public static MyInteger implements Operate{
//整数值
private int value;
//构造方法
public MyInteger(int v){
value=v;
}
//界面方法
/** @return this+x */
public Object add(Object x){
return new MyInteger(value+((MyInteger) x).value)
}
//界面方法
public int compareTo(object x){
int y=((MyInteger) x).value;
if(value<y) return -1;
if(value==y) return 0;
retuen 1;
}
}