繁体   English   中英

为什么类型声明在静态类型语言中很重要?

[英]Why is the declaration of type important in a statically typed language?

我试图理解静态类型的编程语言的好处,并且通过它,我想知道为什么我们需要在声明中包含类型? 它是出于任何目的而不是使类型明确吗? 如果是这种情况,我不明白这一点。 我理解静态类型允许在编译时进行类型检查,但如果我们省略显式类型声明,Java在编译时是否仍然可以推断类型?

例如,假设我们在Java中:

myClass test = new myClass();

这里不需要类型声明吗? 如果我没有弄错,这是静态绑定,Java应该知道testmyClass类型,即使在编译时也没有明确的类型声明。

对可能重复的响应:这不是关于静态与动态类型的问题,而是关于静态类型语言中的类型推断,如接受的答案中所述。

静态类型语言,让你忽略类型声明。 这称为类型推断 缺点是设计(对于语言设计者来说)更难以实现(对编译器编写者来说更难),并且在出现问题时(对于程序员来说)更难以理解。 最后一个问题是,如果推断出很多(或所有)类型,编译器就不能告诉你比“类型不一致”更多 - 通常是通过一个神秘的消息。

在一个简单的案例中,如你引用的那个,是的,这很容易。 但随着你越来越远离琐碎的情况,系统的复杂性会迅速增加。

Java确实以非常有限的形式进行了一些类型推断。 例如,在此代码段中:

List<String> emptyStrings = Collections.emptyList();

...编译器已推断方法调用emptyList返回List<String> ,而不仅仅是List<T> ,其中未指定类型T 该行的非推断版本(也是有效的Java)是:

List<String> emptyStrings = Collections.<String> emptyList();

有必要。 您可以拥有继承,其中类型是必需的。

例如:

Building build1 = new House();
Building build2 = new SkyScraper();

多态性是一样的。

然后,您可以将所有Building s收集到数组中。 如果有一个House和一个SkyScraper你就不能这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM