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 我們想通過反射來訪問它,方法如下 ...