一个简单的泛型实例:
class Automobile(){}
public class Holder<T> {
private T a;
public Holder(T a){this.a = a;}
public void set(T a){this.a = a;}
public T get(){return this.a;}
public static void main(string[]args){
Holder<Automobile> h1 = new Holder<Automobile>(new Automobile());
Automobile = h1.get();
}
}
元组类库:
概念:
1.将一组对象直接打包存储于其中的一个单一对象中。这种容器对象允许读取其中元素,但不允许向其中存放新的对象。
通常元素具有任意长度,同时,元组中的对象可以是任何不同的类型。
目的:
1.一次调用返回多个对象。
2.在编译期保证类型的安全。
一个二维元祖示例:
package net.mindview.util
public TwoTuple<A ,B> {
public final A first;
public final B second;
public TwoTuple<A a, B b> {
first = a;
second = b;
}
public String toString(){
return "(" + first + " ," + second + ")";
}
}
利用继承机制实现长度更长的元组.将上述二元组扩展为三元组代码形式可以如下所示:
public class ThreeTuple<A, B, C> extends TwoTuple<A, B>{
public final C third;
public ThreeTuple(A a, B b, C c) {
super(a, b);
third = c;
}
public String toString(){
return "(" + first + "," + second + "," + third + ")";
}
}
public class FourTuple<A, B, C, D> extends ThreeTuple<A,B,C>{
public final D fourth;
public FourTuple(A a, B b, C c, D d) {
super(a, b, c);
fourth = d;
}
public String toString(){
return "(" + first + "," + second + "," + third + "," + fourth + ")";
}
}
为了使用元组,你只需定义一个长度适合的元组,将其作为方法的返回值,然后在return语句中创建该元组,并返回即可.例如下面使用方式:
/**
* 由于有了泛型,你可以很容易的创建元组,令其返回一组任意类型的对象,而你所要做的,只是编写表达式而已.
*/
public class TupleTest {
static TwoTuple<String, Integer> f(){
//Autoboxing conveerts the int to Integer;
return new TwoTuple<String, Integer>("hi", 47);
}
static ThreeTuple<Amphibian, String, Integer> g(){
return new ThreeTuple<Amphibian, String, Integer>(new Amphibian(), "hi", 47);
}
static FourTuple<Vehicle, Amphibian, String ,Integer> h(){
return new FourTuple<Vehicle, Amphibian, String, Integer>(new Vehicle(), new Amphibian(), "hi", 47);
}
public static void main(String[] args) {
TwoTuple<String, Integer> ttsi = f();
System.out.println(ttsi);
System.out.println(g());
System.out.println(h());
}
}
class Amphibian {}
class Vehicle {}