Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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
clazz和Class<;之间有什么区别&燃气轮机;java中的clazz?_Java_Reflection_Ternary Operator - Fatal编程技术网

clazz和Class<;之间有什么区别&燃气轮机;java中的clazz?

clazz和Class<;之间有什么区别&燃气轮机;java中的clazz?,java,reflection,ternary-operator,Java,Reflection,Ternary Operator,我需要在java中使用反射。我知道Class clazz创建了一个表示Class对象的变量。但是,我尝试使用forName(“aClassName”)方法从字符串中引用类对象。我的IDE(Eclipse)似乎更喜欢用classclazz来声明变量。我在其他地方见过很多次这种符号。这是什么意思 编辑:删除了对三元运算符的引用,因为它与此问题无关。类是一个原始类型-它基本上是一个泛型类型,您将其视为完全不了解泛型 Class是一个使用未绑定通配符的泛型类型-它基本上意味着“Class对于某些类型Fo

我需要在java中使用反射。我知道
Class clazz
创建了一个表示
Class
对象的变量。但是,我尝试使用
forName(“aClassName”)
方法从
字符串中引用
对象。我的IDE(Eclipse)似乎更喜欢用
classclazz
来声明变量。我在其他地方见过很多次这种符号。这是什么意思

编辑:删除了对三元运算符的引用,因为它与此问题无关。

类是一个原始类型-它基本上是一个泛型类型,您将其视为完全不了解泛型

Class
是一个使用未绑定通配符的泛型类型-它基本上意味着“
Class
对于某些类型
Foo
,但我不知道是什么”

类似地,可以使用带边界的通配符:


  • Class在泛型类型中,通配符
    表示“任何类”(因此
    Class
    Class
    相同,但作为原始类型正确参数化)。

    首先要认识的是,在这种情况下,“?”不是三元运算符,但是它是Java泛型实现的一部分,并且指出类的类型是未指定的,正如其他一些答案已经解释的那样

    为了澄清关于三元算子的问题,它实际上非常简单

    假设您有以下if语句:

    boolean correct = true;
    String message;
    
    if (correct) {
      message = "You are correct.";
    } else {
      message = "You are wrong.";
    }
    
    您可以使用三元运算符重写它(将其视为if-else快捷运算符):


    但是,为了提高代码的可读性,除了最简单的语句外,最好避免使用三元运算符。

    这与三元运算符有什么关系?这里没有运算符。在这个上下文中,它不是三元运算符,而是一个未绑定的通配符。但是,从技术上讲,原始类型和未绑定的通配符之间并没有任何区别,是吗?我的意思是,除了避免编译器警告和可能增加代码可读性之外。@Gothmog:由于处理原始类型的方式(IIRC),有时它会影响重写和重载。谢谢Jon,非常感谢!我明白了,我的印象是,
    总是被称为三元运算符。我现在明白这是不正确的。三元运算符是常用的,还是这是一个在过去更流行的特性?我想说,它仍然在使用,但通常是避免的。我仍然时不时地在代码中看到它,所以知道如何阅读它是件好事。很少有情况下,更简洁的陈述会让事情变得更清楚。这是我唯一一次考虑使用它的时候。
    message = (correct) ? "You are correct." : "You are wrong.";