public class MainClass {
public static void main(String args[]) {
Holder<Duck> myDuck = new Holder<Duck>(new Duck());
myDuck.behaviour();
Holder<Dog> myDog = new Holder<Dog>(new Dog());
myDog.behaviour();
//定義する時にまだクラスを分からない場合
Holder<?> mySpecialAnimal ;
mySpecialAnimal = new Holder<Duck>(new Duck());
}
}
//注意: animalはinterfaceなのに、extendsを利用
//interfaceじゃなくてclassでもいけますよ!
class Holder<T extends Animal> {
private T myAnimal;
//constructor
public Holder(T animal){
this.myAnimal=animal;
}
//食べる+飲む
public void behaviour() {
myAnimal.drink();
myAnimal.eat();
}
}
interface Animal {
public void eat();
public void drink();
}
class Duck implements Animal {
public void eat() {
System.out.println("食べた!(duck)");
}
public void drink() {
System.out.println("飲んだ!(duck)");
}
}
class Dog implements Animal {
public void drink() {
System.out.println("飲んだ!(dog)");
}
public void eat() {
System.out.println("食べた!(dog)");
}
}
Last active
August 29, 2015 14:02
-
-
Save canujohann/e48f0f5b236d3e22b097 to your computer and use it in GitHub Desktop.
Generics in java
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment