首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
KevinOfNeu
掘友等级
资深 Android 开发工程师
|
饿了么
自顶向下, 深入浅出
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
187
文章 181
沸点 6
赞
187
返回
|
搜索文章
最新
热门
曲线救国之修复腾讯 X5 内核文件上传的兼容性问题
来说说可恶的腾讯 X5 内核,记录下今天问题的排查,定位,和修复过程。 Android 项目中的 WebView 集成了腾讯的 X5 内核,由于 X5 在展示方面的兼容性问题深受前端们的喜爱(我能说,他们的 H5 页面的样式兼容问题,全部推锅到移动开发吗, 除了最新版本的 Ch…
手拉手教你实现一门编程语言 Enkel, 系列 20
在之前的 19 篇博客中,我把实现编程语言的每一步都详细的记录下来了。如果不拿这门语言,练练手,做个东西玩,那就没什么意思了,对不? 我准备实现一个扑克牌的洗牌模拟器。思路是提供一定数量的玩家,指定每个玩家的扑克牌的数量。作为输出,每个玩家都能获得一定数量的随机扑克牌。 没有黑…
手拉手教你实现一门编程语言 Enkel, 系列 19
对于 Java 初学者来说,对象比较或许是最让人头疼的事情了。 这里有个隐式的的类型装箱,Integer.valueOf(15) 会返回缓存的缓存的 Integer 对象,因为引用一样,所以 areEqual 是 true。 上面代码执行完后,Java 菜逼理所当然的想,我可以…
手拉手教你实现一门编程语言 Enkel, 系列 18
语法规则和 Java 非常类似,但是更加简单,没有复杂的修饰符(比如 static, volatile, transient)。 字段用来赋值,但是这么久以来我们一直没有实现赋值语句来给声明的变量赋值,我这么做是因为有以下考量。 我希望变量是不可变的,赋值意味着改变状态,这会导…
手拉手教你实现一门编程语言 Enkel, 系列 17
所有基于 JVM 的编程语言最终被编译到字节码,然后被虚拟机加载解释执行,这意味着虚拟机并不知道是什么语言生成了字节码。只要类在 classpath 上。 这为 Enkel 调用 Java 库以及其他框架提供了具体可能性。 编译时 在生成字节码之前验证。如果验证失败,会终止编译…
手拉手教你实现一门编程语言 Enkel, 系列 16
面向对象语言中最大的优点是啥?我个人认为是多态, 如何实现多态,使用继承呗,可以在静态语义下使用继承么?肯定不行呀。 在我认为,静态语义违反了面向对象的思想,不应该出现在面向对象中,为了避免使用多态,你可以用单例呀。 因此,为何有 static 情况下,Java 还声称自己是面…
手拉手教你实现一门编程语言 Enkel, 系列 15
Enkel 的构造器声明和调用的语法和 Java 保持一致。 Java 中构造器的声明是一个没有返回值的函数。Enkel 中也是一样。 方法调用要求名字,返回值,以及参数和持有者的信息。构造器的调用仅仅需要类名和参数。 构造器需要类型吗? 不需要。因为返回值类型都是固定的,就是…
手拉手教你实现一门编程语言 Enkel, 系列 14
目前为止 Enkel 仅支持了整数类型和字符串类型。是时候支持其他的原始类型了。这也是为创建面向对象特性做准备。 字节码生成的时候,我们多写一点 case 语句可以实现,但是很丑陋。因此我用 TypeSpecificOpcodes 枚举存储了所有类型对应的字节码指令:
手拉手教你实现一门编程语言 Enkel, 系列 13
递增或者递减必须在运行时推断,因为范围的值可能是方法调用的返回值。 for while 循环或者容器迭代器都很相似,本节不做描述。 Antlr 根据语法规则会生成 ForStatementContext 对象,我们用它生成对编译器更加友好的类。可以解决迭代器变量未生明的问题。 …
手拉手教你实现一门编程语言 Enkel, 系列 12
在 Java 中(多数语言中也是如此)方法调用的参数匹配是通过索引值,如果方法调用的参数比较少并且参数的类型有差别的情况,是合理的。不幸的是,如果方法调用的参数有很多个,并且类型相同,这是个悲剧。 我打赌你很有可能会传错参数。 你发现问题了吗?这种情况开发者很容易搞混参数的顺序…
下一页
个人成就
文章被点赞
78
文章被阅读
17,244
掘力值
348
关注了
17
关注者
17
收藏集
1
关注标签
24
加入于
2016-09-21