传递 object 的实现而不进行强制转换
Pass an implementation of an object without casting
我提前为标题道歉。
我正在尝试将实现 Animal
的 object Cat
传递给名为 Groom
的接口。在我处理 Cat
实施修饰的 Groom
中,我必须向下转换我的 object 以了解我正在修饰的内容,因为 Groom
接口接受 Animal
作为参数。
public interface Groom {
void groom(Animal animal);
}
public class CatGroomer implements Groom {
void groom(Animal animal) {
Cat cat = (Cat) animal; // <---- how can i avoid this downcast
}
}
public interface Animal {
void do();
void animal();
void things();
}
public class Cat implements Animal {
...
}
Groom
可以像这样通用:
interface Groom<T extends Animal> {
void groom(T t);
}
public class CatGroomer implements Groom<Cat> {
void groom(Cat animal) {
}
}
我提前为标题道歉。
我正在尝试将实现 Animal
的 object Cat
传递给名为 Groom
的接口。在我处理 Cat
实施修饰的 Groom
中,我必须向下转换我的 object 以了解我正在修饰的内容,因为 Groom
接口接受 Animal
作为参数。
public interface Groom {
void groom(Animal animal);
}
public class CatGroomer implements Groom {
void groom(Animal animal) {
Cat cat = (Cat) animal; // <---- how can i avoid this downcast
}
}
public interface Animal {
void do();
void animal();
void things();
}
public class Cat implements Animal {
...
}
Groom
可以像这样通用:
interface Groom<T extends Animal> {
void groom(T t);
}
public class CatGroomer implements Groom<Cat> {
void groom(Cat animal) {
}
}