当前在线人数13578
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
这个匿名类怎么写?
[版面:葵花宝典][首篇作者:hamsterdam3] , 2019年07月12日16:48:10 ,144次阅读,4次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
hamsterdam3
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: hamsterdam3 (习·金瓶梅), 信区: Programming
标  题: 这个匿名类怎么写?
发信站: BBS 未名空间站 (Fri Jul 12 16:48:10 2019, 美东)

class CallableFooJob(var arg: String) : Callable<String> {
    override fun call(): LoginStatus {
        return foo(arg)
    }
}

foo是一个外部函数,有一个String参数

现在我想把所有这样的foo函数都用Callable封装起来,同时还想避免给每一个foo写一
个CallableFooJob类。现在的问题是匿名类不能带构造函数,所以不能写成

callableObj: Callable<String> = () -> {return foo(arg)}

这个怎么处理好?不知道说清楚没有
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 192.]

 
hamsterdam3
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: hamsterdam3 (习·金瓶梅), 信区: Programming
标  题: Re: 这个匿名类怎么写?
发信站: BBS 未名空间站 (Fri Jul 12 17:14:15 2019, 美东)

自己解决了

import java.util.concurrent.Callable
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
import java.util.concurrent.Future

fun foo(bar: (m: String) -> String, m: String): Callable<String>{
    class CallableLoginJob : Callable<String> {
        override fun call(): String {
            return bar(m)
        }
    }
    return CallableLoginJob()
}

// my function to pass into the other
fun buz(m: String): String {
    println("another message: $m")
    return "another message: $m"
}

fun zub(m: String): String {
    println("yet another message: $m")
    return "yet another message: $m"
}

fun main(){
    // someone passing buz into foo
    val callableBuz = foo(::buz,"hi" )
    val callableZub = foo(::zub,"hi" )
    val service: ExecutorService = Executors.newFixedThreadPool(1)
    var task: Future<String> = service.submit(callableBuz)
    task.get()
    task = service.submit(callableZub)
    task.get()
    service.shutdownNow()
}

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 192.]

 
TheMatrix
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: TheMatrix (TheMatrix), 信区: Programming
标  题: Re: 这个匿名类怎么写?
发信站: BBS 未名空间站 (Fri Jul 12 19:51:56 2019, 美东)

这是Java?不认识了。

【 在 hamsterdam3 (习·金瓶梅) 的大作中提到: 】
: class CallableFooJob(var arg: String) : Callable {
:     override fun call(): LoginStatus {
:         return foo(arg)
:     }
: }
: foo是一个外部函数,有一个String参数
: 现在我想把所有这样的foo函数都用Callable封装起来,同时还想避免给每一个foo写一
: 个CallableFooJob类。现在的问题是匿名类不能带构造函数,所以不能写成
: callableObj: Callable = () -> {return foo(arg)}
: 这个怎么处理好?不知道说清楚没有




--
☆ 发自 iPhone 买买提 1.24.10
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

 
TheMatrix
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: TheMatrix (TheMatrix), 信区: Programming
标  题: Re: 这个匿名类怎么写?
发信站: BBS 未名空间站 (Fri Jul 12 19:58:17 2019, 美东)

哦,kotlin。

【 在 hamsterdam3 (习·金瓶梅) 的大作中提到: 】
: 自己解决了
: import java.util.concurrent.Callable
: import java.util.concurrent.ExecutorService
: import java.util.concurrent.Executors
: import java.util.concurrent.Future
: fun foo(bar: (m: String) -> String, m: String): Callable{
:     class CallableLoginJob : Callable {
:         override fun call(): String {
:             return bar(m)
:         }
: ...................




--
☆ 发自 iPhone 买买提 1.24.10
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

 
hamsterdam3
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: hamsterdam3 (习·金瓶梅), 信区: Programming
标  题: Re: 这个匿名类怎么写?
发信站: BBS 未名空间站 (Sat Jul 13 09:16:13 2019, 美东)

嗯,但是还有点问题,不能传入可变参数的函数,要对一个参数的函数写一个foo,两
个参数的函数另外写一个foo2...感觉有点傻,也许是我没搞明白


【 在 TheMatrix (TheMatrix) 的大作中提到: 】
: 哦,kotlin。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 75.]

[分页:1 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996