当前位置: 首页 > 面试题库 >

Java是否有自动类型推断功能?

倪培
2023-03-14
问题内容

autoJava中是否像C ++中一样有变量类型?

一个例子:

for ( auto var : object_array)
    std::cout << var << std::endl;

for( auto var : object_array)
    var.do_something_that_only_this_particular_obj_can_do();

我知道Java中有一个增强的html" target="_blank">for循环,但是有自动吗?如果不是,是否有这样做的技巧?我指的是C ++ 11中的新功能


问题答案:

在问题被 编辑 之前回答:

auto,Java中没有变量类型。可以通过以下方式实现相同的循环:

for ( Object var : object_array)
  System.out.println(var);

Java具有局部变量,其范围在定义它们的块内。 _与C和C 类似,但是没有auto或register关键字。
但是,Java编译器将不允许使用未明确初始化的局部变量,并且会产生编译错误(与C和C


不同,在该情况下,编译器通常只会发出警告)。_礼貌:Wikipedia。

不,在Java中没有像C
++这样的主流类型推断。有一个RFE,但是由于“将无法解决”而关闭,给出的原因是:

人类可以通过两种方式从类型声明的冗余中受益。首先,冗余类型可以作为有价值的文档-
读者不必搜索getMap()的声明来查找返回的类型。其次,冗余允许程序员声明预期的类型,从而受益于编译器执行的交叉检查。



 类似资料:
  • 为什么Java可以推断出多个上限类型的共同祖先,而不能推断出下限类型的共同祖先? 更具体地说,请考虑以下示例:

  • 问题内容: 以下代码在t3行中出现编译错误: 错误消息是: 类型不匹配:无法从对象转换为T 我知道我可以使用强制转换或手动绑定来解决问题,我的问题是: 编译器进行自动绑定是否如此困难,是否会失败? 编辑:添加了错误消息。 编辑:添加了另一个示例如何不会发生该错误。 编辑:删除了第二个示例,因为它令人困惑,使问题更加清楚。 问题答案: 在第一种情况下,您有两个具有名为的类型参数的泛型方法,但是这些类

  • 问题内容: 在此站点上为另一个答案编写代码时,我遇到了这种特殊性: 首先,我很困惑为什么对编译器的调用正常。当未提及任何未经检查的异常类型时,它推断出什么可能的类型? 其次,接受这一工作原理后,为什么编译器会在调用中抱怨?他们看起来非常相似。 问题答案: 的T 推断为。可以从有关类型推断的语言规范(http://docs.oracle.com/javase/specs/jls/se8/html/j

  • 我对Kotlin是新来的,这是我的问题: 我使用android studio 3.2.1 kotlin版本:1.2.71 对此有什么想法吗?

  • 主要内容:1 Java8 类型推断的介绍,2 Java8 类型推断的案例1,3 Java8 类型推断的案例21 Java8 类型推断的介绍 类型推断是Java的一项功能,它使编译器可以查看每个方法调用和相应的声明以确定参数的类型。 Java在Java 8中提供了类型推断的改进版本。 1.1 Java8以前 在下面的声明中,我们在一侧提到了arraylist的类型。这种方法是在Java 7中引入的。在这里,您可以将第二面留为<>,并且编译器将通过引用变量的类型来推断其类型。 1.2 Java8以后