Java - 将不相关的 类 归为同一个名字

Java - Grouping unrelated classes under one name

我是 java 的新手,我正在创建一个代码,其中有一些 类,例如:FooBarFizBaz。在我的代码中,所有这些 类 都是相关的,但它们没有任何共同的 methods/attributes。我希望能够访问它们各自的所有属性和方法,同时能够将它们组合在一起。例如,我想做这样的事情:

Grouper abc = new Foo();
Grouper xyz = new Baz();
// Foo has a attribute foosAttr
int i = abc.foosAttr;

我该怎么做?

我很确定你不能,而且我绝对确定你不应该。如果没有诸如向下转换之类的东西(或者例如 k​​otlin 中编译器的类型检查和自动转换),这是不可能的——它会违反很多规则。

以稍微不同的方式,您可以尝试使用泛型,例如:

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;