public class FGeneral<T>{
private T con;
public void setFG(T s){
con = s;
}
public T getFG(){
return con;
}
public <T1> void showAny(T1 data){
System.out.println(data);
}
}
public class Generous <T extends Person>{
private T obj;
public void setObject(T obj){
this.obj = obj;
}
public T getObj(){
return obj;
}
}
public interface Person {
public void work();
}
public class TStudent implements Person{
private String work;
public void setWork(String s){
work = s;
}
public String getWork() {
return work;
}
public void work(){
System.out.println("学生目前的工作是: "+work);
}
}
import java.util.Random;
public class TTeacher implements Person{
private String work;
public TTeacher(){
work = "给学生布置作业";
}
public void work(){
System.out.println("老师的工作是: "+work);
}
public String getWork(){
return work;
}
public void putWork(TStudent stu){
Random random = new Random();
String home;
int homnum = random.nextInt(2);
if(homnum == 0){
home = "背22首古诗";
}else{
home = "抄33首古诗";
}
stu.setWork(home);
}
}
public class MT {
public static void main(String[] args) {
TTeacher teacher = new TTeacher();
TStudent student = new TStudent();
Generous<Person> one = null;
Generous<TTeacher> two = new Generous<TTeacher>();
TTeacher te = new TTeacher();
two.setObject(te);
teacher.work();
teacher.putWork(student);
student.work();
FGeneral<String> s1 = new FGeneral<String>();
s1.setFG("lisa");
System.out.println(s1.getFG());
s1.showAny(22); //括号中任意输入各种类型
s1.showAny(student.getWork());
FGeneral<FGeneral<TStudent>> three = new FGeneral<FGeneral<TStudent>>();
FGeneral<TStudent> Ts = new FGeneral<TStudent>();
Ts.setFG(student);
three.setFG(Ts);
System.out.println(three.getFG().getFG().getWork());
FGeneral<?> f = Ts;
System.out.println(two.getObj().getWork());
}
}
例子2:
interface abc<T>{
public void setData(T data);
public T getData(int num);
public int getSize();
}
public abstract class Animals {
public abstract void setAnimal(String name);
public abstract String getAnimal();
}
import java.util.Arrays;
class ArrayList<T> implements abc <T>{
private Object [] data = null;
int size = 0;
public ArrayList(){ //初始化大小
data = new Object[16];
}
public ArrayList(int num){
data = new Object[num];
}
public void setData(T obj){
enSure(size+1);
data[size++] = obj;
}
@SuppressWarnings("unchecked")
public T getData(int num){ //返回第num个数据
return (T)data[num];
}
public int getSize(){
return size;
}
private void enSure(int num){ //当超出容器大小时扩容
if(num > data.length){
int newLength = data.length + (data.length >> 1);
data = Arrays.copyOf(data, newLength);
}
}
}
public class Dog extends Animals{
private String type;
public void setAnimal(String s){
type = s;
}
public String getAnimal() {
return type;
}
public void showWork(){
System.out.println("我是一条小狗");
}
}
import java.util.Random;
public class MArr {
public static void main(String[] args) {
ArrayList<Dog>data = new ArrayList<Dog>(8);
Random random = new Random();
for(int i =0; i < 10; i++){
int num = random.nextInt(18);
String name = "dog_" + num;
Dog dog = new Dog();
dog.setAnimal(name);
data.setData(dog);
}
for(int j =0; j <data.getSize(); j++){
System.out.println("第"+j+"只狗的名字叫:"+data.getData(j).getAnimal());
}
}
}