如何用反射呼叫scala方法

2021-08-13 10:01:48 字數 1128 閱讀 4064

scala編譯出來的class可以用反射區呼叫。比如scala**如下

private def updateweightsandgaussians(

mean: bdv[double],

sigma: breezematrix[double],

weight: double,

sumweights: double): (double, multivariategaussian) =

我們可以用下面的**呼叫

method method = gaussianmixture.class.getdeclaredmethod( "org$apache$spark$mllib$clustering$gaussianmixture$$updateweightsandgaussians", densevector.class, densematrix.class,double.class,double.class );

method.setaccessible( true );

gaussianmixture gau = new gaussianmixture();

gau.setk( 2 ).setconvergencetol( 0.01 ).setmaxiterations( 2 ).setseed( 10 );

vector v = vectors.dense( new double );

matrix m = matrices.dense( 3, 3, new double );

object obj = method.invoke( gau, v.tobreeze( ), m.tobreeze( ), 1.0, 3.0 );

system.out.println( obj );

要點是,反射的名字最好用用method ms = gaussianmixture.class.getdeclaredmethods( )來確定名字,用 m.getparametertypes( ) 來檢視引數,然後在確定引數。

double型別要用 double.class.

method method = null;

method ms = gaussianmixture.class.getdeclaredmethods( );

for (method m:ms)}}

反射機制 呼叫方法

通過反射機制,呼叫乙個物件的方法 獲取成員方法 public method getmethod string name,class.parametertypes 獲取單個公共成員方法 public method getdeclaredmethod string name,class.paramete...

C 反射呼叫方法與特性呼叫方法

在一些高階的開源專案中通常會使用到反射和打特性,如果對於c 初級的程式設計師第一眼看到肯定一臉懵逼,我以前也是這樣過來的所以今天公司沒啥事情可以幹,就寫一下筆記 unity 開源專案et 以前看et專案時只知道原理不知其中的 所以今天自已實現一下原理 中就使用了這種方式實現。在此我解析一下反射與自定...

C 如何通過反射獲取方法以及動態呼叫方法

假設我們現在有下面這個類testclass namespace testspace public testclass string value public string getvalue string prefix public string value get 我們想通過反射來訪問它,方法如下 ...