理解一些概念

时间:2013-06-22 23:53:37

标签: java oop generics methods constructor

我是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>?为什么我们使用这些箭头括号?

3 个答案:

答案 0 :(得分:2)

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

另外 Bar&lt; Type,Type2&gt; 是一种类型,这里是类Foo的基类。箭头括号用于使类通用于备用重复项。认为它就像你有布尔值列表。该列表与列表整数值有何不同?这里只有条目的类型不同,所以编程语言允许我们从中抽象出来:

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

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

答案 1 :(得分: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

答案 2 :(得分:1)

从定义中,我们知道我们有两个通用类:

栏:

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

和SomeFoo:

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

Foo代表一个不再通用的类。换句话说,T和V已被固定为Type和Type2。因此,如果你想制作一个Foo,你可以使用新的Foo()而不是新的Foo。

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