簡體   English   中英

如何將某些內部類的類類型從Java源傳遞到Scala?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM