Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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_Android_Generics - Fatal编程技术网

Java 理解类<&燃气轮机;

Java 理解类<&燃气轮机;,java,android,generics,Java,Android,Generics,我遇到了以下代码: public class RestfulAdage extends Application { @Override public Set<Class<?>> getClasses() { Set<Class<?>> set = new HashSet<Class<?>>(); set.add(Adages.class); return set; } } public类

我遇到了以下代码:

public class RestfulAdage extends Application {
  @Override
  public Set<Class<?>> getClasses() {
    Set<Class<?>> set = new HashSet<Class<?>>();
    set.add(Adages.class);
    return set;
  }
}
public类RestfulAdage扩展了应用程序{
@凌驾

public Set>Set=new HashSet
的意思。

它指的是gererics。我建议你读一读。基本上,你只知道在运行时使用什么类型的对象。例如,类可以是整数、字符串,甚至是你定义的类类型
read here

指的是未知类型的类。表示法使用的是对可添加到集合中的类的类型没有限制的。例如,以下内容不起作用

Set<Class<String>> set = new HashSet<Class<String>>();
set.add(Adages.class); // type not allowed
Set Set=newhashset();
set.add(Adages.class);//不允许使用类型
来自:


在泛型代码中,被称为通配符的问号(?)表示未知类型。通配符可用于多种情况:作为参数、字段或局部变量的类型;有时作为返回类型(尽管更具体的编程实践更好)。通配符从未用作泛型方法调用、泛型类实例创建或超类型的类型参数


检查链接,您将找到更详尽的文档、示例等。

类是一个可参数化的类,因此您可以使用语法类,其中T是一个类型。通过编写类,您可以声明一个可以是任何类型的类对象(?是通配符)。类类型是一个包含关于类的元信息的类型

通过指定泛型类型来引用泛型类型始终是一种好的做法,通过使用类,您遵守这种做法(您知道类是可参数化的),但您并没有将参数限制为具有特定类型

关于泛型和通配符的参考:


关于类对象和反射的参考(用于自我反省的Java语言功能):

在通用代码中,被称为通配符的问号(?)表示未知类型。通配符可以在多种情况下使用:作为参数、字段或局部变量的类型;有时作为返回类型通配符永远不会用作泛型方法调用、泛型类实例创建或超类型的类型参数

以下各节将更详细地讨论通配符,包括上界通配符、下界通配符和通配符捕获


更多信息

假设您有一组属于不同类型的,并且您也有不同类的实例。因此,如果您想检查这些实例是否是其中一个类的实例,您可以迭代这些集合并执行以下操作工作。对于这种工作,你最好使用一个完全不受限制的集合:


public boolean checkClasses(SetCheck)那么这是否意味着它可以接受任何类型的对象,比如string、integer、double…等等?set.add(“dd”)失败,并且只接受空值…为什么是空值that@user3134565阅读泛型,而不仅仅是人们告诉你的!你不可能学会简单的方法。你试图添加一个对象的实例,你需要一个类的实例,但如果这是真的,那么为什么失败了:set.add(“hello”)@user3134565-“hello”是字符串实例,不是类实例。您可以放入集合
string.class
,但不能放入字符串实例。您还可以放入
“hello”.getClass()
好的,我现在明白了,但是这有什么用呢?我的意思是,我想不出这个can u有什么好的用途吗?你可以将任何类型放入
集中,但它的类型没有被检查。一个好的例子是依赖项容器,做依赖项注入一般来说,这种事情在你进行元编程时使用。你能解释一下吗请向我提供更多信息有关更多信息: