理解类

我遇到了这段代码:

public class RestfulAdage extends Application { @Override public Set<Class> getClasses() { Set<Class> set = new HashSet<Class>(); set.add(Adages.class); return set; } } 

我不明白Class意思。

Solutions Collecting From Web of "理解类"

Class< ?>指的是一类未知types。 该表示法使用无界generics ,它对可以添加到Collection的类的types没有限制。 例如,以下内容不起作用

 Set> set = new HashSet>(); set.add(Adages.class); // type not allowed 

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

通过指定他的特定types来引用genericstypes总是很好的做法,通过使用Class你尊重这种做法(你知道Class可以参数化),但是你并没有限制你的参数具有特定的types。

有关generics和通配符的参考: http : //docs.oracle.com/javase/tutorial/java/generics/wildcards.html

关于Class对象和reflection的引用(用于内省自身的Java语言的特性): http : //java.sun.com/developer/technicalArticles/ALT/Reflection/

在通用代码中,称为通配符的问号(?)表示未知types。 通配符可用于各种情况:作为参数,字段或局部variables的types; 有时作为返回types(虽然更好的编程实践更具体)。 通配符从不用作generics方法调用,generics类实例创建或超types的types参数。

以下部分更详细地讨论通配符,包括上限有界通配符,下限有界通配符和通配符捕获。

欲了解更多信息, 请点击此

它指的是gererics。 我建议你仔细阅读一下。 基本上,您只能在运行时知道您可以使用哪种types的对象。 例如,Class可以是Integer,String甚至是YourDefinedClassType
在这里阅读http://java.sun.com/developer/technicalArticles/J2SE/generics/

来自: 通配符

在通用代码中,称为通配符的问号(?)表示未知types。 通配符可用于各种情况:作为参数,字段或局部variables的types; 有时作为返回types(虽然更好的编程实践更具体)。 通配符从不用作generics方法调用,generics类实例创建或超types的types参数。

查看链接,您将find更详尽的文档,示例等。

假设您有一组属于不同types的类 ,并且您也有不同类的实例。 因此,如果要检查这些实例是否是这些类之一的实例 ,您可以迭代这些集并完成工作。 对于那种工作,你最好使用完全不受限制的套装:

 public boolean checkClasses(Set> typeLessClassSet, Set instances){ while(typeLessClassSet.hasNext()){ Class c = typeLessClassSet.next(); while(instances.hasNext()){ Object o = instances.next(); if(o instanceof c) return true; } } return false; }