-2

我是 java 新手,正在尝试理解以下代码。

public class Foo extends Bar<Type, Type2> {

  @Override
  public SomeFoo<Type, Type2> getReader(Type type) throws IOException {
    return new SomeInstance(type);
  }
}

我试图了解什么是public SomeFoo.

不是一堂课??它是一个构造函数..为什么它返回一些东西?

我什么时候做

Foo foobar = new Foo()

会是foobar什么?

什么是Bar<Type,type2>?为什么我们使用这些箭头括号?

4

3 回答 3

2

SomeFoo <Type,Type2>是一种类型。这个特殊的使用 Java 泛型,这里有一些关于它的更多信息:http: //docs.oracle.com/javase/tutorial/java/generics/index.html

Bar<Type,Type2>也是一个类型,这里是类 Foo 的基类。箭头括号用于使类通用以备用重复项。认为它就像您拥有布尔值列表一样。此列表与列表整数值有何不同?这里只有条目的类型不同,所以编程语言允许我们从中抽象出来:

List<Boolean> booleans = ...;
List<Integer> integers = ...;

请参阅java.util.List类的 Javadoc 和/或 Source以了解更多信息。

于 2013-06-23T00:05:43.070 回答
1

public SomeFoo<Type, Type2> getReader(Type type)是从Bar类继承的方法。我们知道它是继承自Bar因为extends在类定义中使用的。

Foo foobar = new Foo()创建一个Foo对象,并且foobar是引用该对象的方法。

括号<>表示 Java 中的泛型。

深入了解泛型是什么以及它们如何操作的细节超出了本线程的范围。我建议像其他人一样在这里阅读它们http://docs.oracle.com/javase/tutorial/java/generics/why.html

于 2013-06-23T00:00:43.930 回答
1

从定义中,我们知道我们有两个泛型类:

酒吧:

public class Bar<T, V> {...}

和SomeFoo:

public class SomeFoo<T, V> {...}

Foo 代表一个不再是通用的类。也就是说,T 和 V 已被固定为 Type 和 Type2。所以如果你想制作一个 Foo,你可以使用 new Foo() 代替 new Foo。

SomeFoo 是另一个具有泛型的对象,它也应该在 Foo 中固定为 Type 和 Type2。所以 SomeFoo 是公共方法 getReader(Type type) 的返回类型。

于 2013-06-23T00:09:17.507 回答