Febers

Febers

V2EX 第 263206 号会员,加入于 2017-10-28 21:17:39 +08:00
根据 Febers 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
Febers 最近回复了
令人无语,倒计时走完之后,重新从一个小时开始了,逗人玩么
2021-06-26 13:25:40 +08:00
回复了 juziss 创建的主题 教育 选择成电还是北邮的计算机?
学校差别不大,基本上属于选城市了。成都上学,北京工作,个人感觉北京这城市简直不是人能待的,如果是南方人强烈建议去成都
2020-04-28 12:59:45 +08:00
回复了 atfeel 创建的主题 Android Java 能把代码块当参数传递到其他方法并执行吗?
@no1xsyzy #28 😮可能因为写起来比较好理解?
2020-04-28 12:21:33 +08:00
回复了 atfeel 创建的主题 Android Java 能把代码块当参数传递到其他方法并执行吗?
如果要深究到语言特性的话,对于这样的需求,Java 字节码层面支持是 invokedynamic 指令的引入,语法层面的支持是 Lambda 的引入
2020-04-28 12:14:40 +08:00
回复了 atfeel 创建的主题 Android Java 能把代码块当参数传递到其他方法并执行吗?
个人觉得 Kotlin 的很多东西很有趣,学习 Kotlin 反编译之后的 Java 代码,基本上就是用 Java 如何实现 Kotlin 特性的工业化答案。
这个问题很多同学都给了答案,重点在于:Java 是纯面向对象语言,一切方法参数都是对象(基本数据类型不谈),而匿名内部类的存在让我们可以使用 自定义方法的对象,虽然写法看起来比较啰嗦;引入 Lambda 之后的 Java 代码写起来更“函数式”了,但本质上还是使用对象的概念
2020-04-28 12:03:49 +08:00
回复了 atfeel 创建的主题 Android Java 能把代码块当参数传递到其他方法并执行吗?
@atfeel #22
Kotlin 代码的本质是,定义一个类型属于 () -> Unit 的变量,然后动态赋值,通过 invoke 方法执行,反编译 Kotlin 的字节码之后可以发现,其对应的 Java 类型是 Function0 接口,位于 kotlin.jvm.functions,仿照其写法

//使用了 @FunctionalInterface 以使用 Lambda
@FunctionalInterface
interface Action {
void invoke();
}

//定义与赋值
Action action;
action = () -> {
//some code 1
};
//非 Lambda 写法
action = new Action() {
@Override
public void invoke() {
//some code 2
}
};

//调用
action1.invoke();

使用 Runnable 的原因很简单,它是系统定义的一个 FunctionalInterface,而且很普通,调用 run 方法也跟多线程没有关系,把 Runnable 替换成上面的 Action,就可以少写一个接口
2020-04-27 21:46:31 +08:00
回复了 atfeel 创建的主题 Android Java 能把代码块当参数传递到其他方法并执行吗?
遇到过同样的需求,在没有改写成 Kotlin 之前,使用的是 Runnable 然后手动调 run ;改写成 Kotlin 之后看起来还挺酷的:
//定义
var action: ()->Unit = { }
//赋值
action = {
//some code
}
//调用
action.invoke() //action()
2019-12-12 11:52:54 +08:00
回复了 Febers 创建的主题 Java Java 中通过 ClassName.super 获取直接父类的引用范围的疑惑
@KentY #15 意思是 在 Bird 的非静态方法中可以调用 Bird.super.action() 实现调用父类方法的目的,但是在其他地方,想调用就不行
比如在 Main 中,第一种调用形式,Bird.super.action 明显不行,因为 Bird 没有实例,无法调用它自身或者它父类(如果有的话)的 action 这一个实例方法;第二种调用形式,Bird bird = new Bird(); bird.super.action(),报错,才有了我的疑惑
2019-12-11 23:36:49 +08:00
回复了 Febers 创建的主题 Java Java 中通过 ClassName.super 获取直接父类的引用范围的疑惑
@janus77 #10 对的,还得是实例方法
2019-12-11 23:36:12 +08:00
回复了 Febers 创建的主题 Java Java 中通过 ClassName.super 获取直接父类的引用范围的疑惑
@KentY #9 确实是没有这种用法的,不过可以在类的实例方法中调用 SubClass.super.function。
而我又想在外部 Main 类中进行方法引用,方法引用又有一一种父类方法引用的方式,所以才有这个问题
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2451 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 15:40 · PVG 23:40 · LAX 08:40 · JFK 11:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.