当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么类型声明在静态类型语言中很重要?》经验,为你挑选了1个好方法。

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

例如,假设我们在Java中:

myClass test = new myClass();

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

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



1> yshavit..:

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

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

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

List emptyStrings = Collections.emptyList();

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

List emptyStrings = Collections. emptyList();


@ rb612完全没有区别; 内存完全由对象决定,而不是由对象引用.引用只是一个固定的大小,所以三个引用`String a`,`List b`和`ArrayList > c`将占用完全相同的空间(实际上, JVM甚至不会知道它们不是"对某个对象的引用".基元根本没有多态性,但它们的大小不同(一个字节只有一个字节,一个短字是两个字节,等等).
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有