[英]How to pass Class Type of some Inner class from Java source to Scala?
我有一些定義如下兩個類的java代碼
public class Foo{
/*Some code here*/
private final Bar b = new Bar(); //Object of inner class.
final class Bar{
/*Some code here*/
}
@Override
public Class<? extends SomeClass> getSerializedClass(){
return Bar.class;
}
}
現在,我想將內部類Bar的類型傳遞給Scala中的其他代碼。
trait Trait1 {
def func1[B](path: String, overwrite:Boolean= false, value:Int ) = {
val converter = new OutputConverter[A, Bar, B] (K,V)
Sink[A, B](path, converter, overwrite)
}
case class Sink[K, B](path: String,
outputConverter: OutputConverter[A, Bar, B],
overwrite: Boolean = false) extends DataSink[A, Bar, B] with SinkSource {
/**Some code here*/
}
困難在於我無法更改Java代碼。 誰能告訴我一種方法嗎?
如果要使用它作為類型(例如Java中的Foo.Bar
): Foo#Bar
(例如OutputConverter[A, Foo#Bar, B]
)。
如果要使用Class[_]
對象(如Java中的Foo.Bar.class
): classOf[Foo#Bar]
。
編輯:我沒有注意到Bar
不是公開的。 如果您的Scala代碼與Java代碼位於同一軟件包中,則您應該可以通過上述方式進行訪問; 如果不是,您將無法訪問Bar
(通過反射除外),並且也應該無法訪問。
有關更多詳細信息,請參見http://www.iulidragos.org/?p=166 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.