Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 理解一些概念_Java_Oop_Generics_Methods_Constructor - Fatal编程技术网

Java 理解一些概念

Java 理解一些概念,java,oop,generics,methods,constructor,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); } } 什么是foobar 什么是条形码?为什么要使用这些箭头括号?public SomeFoo g

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

public class Foo extends Bar<Type, Type2> {

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

什么是条形码?为什么要使用这些箭头括号?

public SomeFoo getReader(Type类型)
是从
Bar
类继承的方法。我们知道它是从
Bar
继承的,因为类定义中使用了
extends

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

括号
表示Java中的泛型

深入了解泛型是什么以及它们如何操作的细节超出了本线程的范围。我建议,像其他人一样,在这里仔细阅读它们。SomeFoo是一种类型。这一个使用Java泛型,下面是关于它的更多信息:

另外,Bar是一种类型,这里是Foo类的基类。箭头括号用于使类成为通用类,以避免重复。就像你有一个布尔值列表一样。此列表与整数值列表有何不同?这里只有条目类型不同,因此编程语言允许我们从中提取:

List<Boolean> booleans = ...;
List<Integer> integers = ...;
列出布尔值=。。。;
列出整数=。。。;

查看类的Javadoc和/或源代码java.util.List了解更多信息。

根据定义,我们知道我们有两个通用类:

酒吧:

公共类栏{…}
还有一些:

public class SomeFoo<T, V> {...}
公共类SomeFoo{…}
Foo表示一个不再是泛型的类。换句话说,T和V被固定为Type和Type2。因此,如果您想创建一个Foo,可以使用new Foo()而不是new Foo


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

Hm.Start。我认为OP需要比泛型更早开始@BoristheSpider:我看到泛型回答了第二个问题,但什么是public SomeFoo?
public SomeFoo(…)
只是一个普通的公共方法,返回另一个类的实例
someInstance
——通常用于只有一些静态方法的内部类。@AndrewGibson我认为问题是“foobar的泛型类型是什么?”但你似乎是对的。先是Java基础,然后是泛型。这只回答了一半的问题;这一点不是很好。@Boristeider我不是Java专家,只是想根据我所知道的给他一些帮助。谢谢你的侮辱,tho。
public class Bar<T, V> {...}
public class SomeFoo<T, V> {...}