由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Java里面能 extends Scala object的abstract inner class吗?
相关主题
vector在constructor里初始化class impl
唉,看来scala已经废了c++中的inline 函数是做什么的?
Finagle有人用过么问个 enum{}的问题 谢谢 (转载)
Scala higher-kind type和jvm弱type system这次Scala学Clojure有点不地道了
ask a C++ inheritance questionScala又被鄙视了
关于构造函数的一道测试题 (转载)scala最烦人的是build太不容易了
C++ interview programming exerciseScala.js is no longer experimental
码工试题 (转载)参加scala days的唯一感受
相关话题的讨论汇总
话题: bar话题: java话题: scala话题: foo话题: class
进入Programming版参与讨论
1 (共1页)
S********t
发帖数: 3431
1
比如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
就碰到这个问题了。。。
l********s
发帖数: 276
2
感觉不可能,你这个java得新class里面的构造函数是怎么override那个id的?
l******t
发帖数: 55733
3
javap反出来看看啥构造函数呗
H****S
发帖数: 1359
4
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吗?多谢!

S********t
发帖数: 3431
5
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();

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

【在 l********s 的大作中提到】
: 感觉不可能,你这个java得新class里面的构造函数是怎么override那个id的?
1 (共1页)
进入Programming版参与讨论
相关主题
参加scala days的唯一感受ask a C++ inheritance question
rust现在很火关于构造函数的一道测试题 (转载)
scala下一代compiler dottyC++ interview programming exercise
C++ class template specialization question码工试题 (转载)
vector在constructor里初始化class impl
唉,看来scala已经废了c++中的inline 函数是做什么的?
Finagle有人用过么问个 enum{}的问题 谢谢 (转载)
Scala higher-kind type和jvm弱type system这次Scala学Clojure有点不地道了
相关话题的讨论汇总
话题: bar话题: java话题: scala话题: foo话题: class