Java - 将不相关的 类 归为同一个名字
Java - Grouping unrelated classes under one name
我是 java 的新手,我正在创建一个代码,其中有一些 类,例如:Foo
、Bar
、Fiz
和Baz
。在我的代码中,所有这些 类 都是相关的,但它们没有任何共同的 methods/attributes。我希望能够访问它们各自的所有属性和方法,同时能够将它们组合在一起。例如,我想做这样的事情:
Grouper abc = new Foo();
Grouper xyz = new Baz();
// Foo has a attribute foosAttr
int i = abc.foosAttr;
我该怎么做?
我很确定你不能,而且我绝对确定你不应该。如果没有诸如向下转换之类的东西(或者例如 kotlin 中编译器的类型检查和自动转换),这是不可能的——它会违反很多规则。
以稍微不同的方式,您可以尝试使用泛型,例如:
class Grouper<T> {
private T wrapped;
...
public T getWrapped() {
return wrapped;
}
}
...
Grouper<Foo> foo = Grouper.of(new Foo());
Grouper<Bar> bar = Grouper.of(new Bar());
int i = foo.getWrapped().foosAttr;
我是 java 的新手,我正在创建一个代码,其中有一些 类,例如:Foo
、Bar
、Fiz
和Baz
。在我的代码中,所有这些 类 都是相关的,但它们没有任何共同的 methods/attributes。我希望能够访问它们各自的所有属性和方法,同时能够将它们组合在一起。例如,我想做这样的事情:
Grouper abc = new Foo();
Grouper xyz = new Baz();
// Foo has a attribute foosAttr
int i = abc.foosAttr;
我该怎么做?
我很确定你不能,而且我绝对确定你不应该。如果没有诸如向下转换之类的东西(或者例如 kotlin 中编译器的类型检查和自动转换),这是不可能的——它会违反很多规则。
以稍微不同的方式,您可以尝试使用泛型,例如:
class Grouper<T> {
private T wrapped;
...
public T getWrapped() {
return wrapped;
}
}
...
Grouper<Foo> foo = Grouper.of(new Foo());
Grouper<Bar> bar = Grouper.of(new Bar());
int i = foo.getWrapped().foosAttr;