Redian新闻
>
Java里面能 extends Scala object的abstract inner class吗?
avatar
Java里面能 extends Scala object的abstract inner class吗?# Programming - 葵花宝典
b*n
1
35年前,华允庆26岁,他的女儿华华只有1岁,两人在镇江金山塔影湖边留下来第一张合影;此后,除了1998年因女儿出国没能拍照外,父女俩每年都会在老地方合影;现在华允庆年近花甲,华华也已是两个孩子的妈妈了。
看着每一年的每一张照片,让人有种说不出的感动和感慨,30多年,每年的相同地点见证父女的情感,背景除了有小小的改动几乎没什么变化,但是人变化的太大了,女儿一年年长大成为孩子的妈妈,父亲一年年变老,成了老爷爷。
时间都去哪了?记得抓紧孝顺父母吧!
avatar
S*t
3
比如scala里:
class Foo {
abstract class Bar[A] (val id: String) {}
}
我在另外一个 Java project里想要 extends这Bar:
Foo foo = ...
Foo.Bar bar = foo.new Bar(foo, "id") {...}
可以这样做吗?我试了似乎是可以 compile,但 runtime总是说Bar的 constructor
NoSuchMethod...
请教下版上的scala-java高手,是不允许这样做,还是需要一些什么 trick吗?多谢!
具体的 background是在写一个 Java的 finagle-thrift service,可twitter
finagle全是用scala写的。。。想写个 request independent的 context extraction
就碰到这个问题了。。。
avatar
l*s
4
感觉不可能,你这个java得新class里面的构造函数是怎么override那个id的?
avatar
l*t
5
javap反出来看看啥构造函数呗
avatar
H*S
6
Any reason you have to make Foo.Bar polymorphic? If you make it monomorphic
(get rid of [A]), it actually compiles and is runnable.
// in scala
class Foo {
abstract class Bar(val id: String) {}
}
// in java
public class MainFoo {
public static void main(String... args) {
Foo2 foo = new Foo2();
Foo2.Bar bar = foo.new Bar("id") {};
}
}


比如scala里:

【在 S********t 的大作中提到】
: 比如scala里:
: class Foo {
: abstract class Bar[A] (val id: String) {}
: }
: 我在另外一个 Java project里想要 extends这Bar:
: Foo foo = ...
: Foo.Bar bar = foo.new Bar(foo, "id") {...}
: 可以这样做吗?我试了似乎是可以 compile,但 runtime总是说Bar的 constructor
: NoSuchMethod...
: 请教下版上的scala-java高手,是不允许这样做,还是需要一些什么 trick吗?多谢!

avatar
S*t
7
Foo Bar是 third party library (twitter/finagle-core),没法改的。。。

monomorphic

【在 H****S 的大作中提到】
: Any reason you have to make Foo.Bar polymorphic? If you make it monomorphic
: (get rid of [A]), it actually compiles and is runnable.
: // in scala
: class Foo {
: abstract class Bar(val id: String) {}
: }
: // in java
: public class MainFoo {
: public static void main(String... args) {
: Foo2 foo = new Foo2();

avatar
S*t
8
好像确实不 work
最后想了个办法,写了一小段scala去extend那个abstract inner class,然后跟我的
java code混在一起用,似乎就行了

【在 l********s 的大作中提到】
: 感觉不可能,你这个java得新class里面的构造函数是怎么override那个id的?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。