我一直在玩rJava包,但由於似乎rJava沒有意識到Java泛型類型,所以我在使用泛型類型參數創建java對象時遇到困難。如果我有一個Java類,如:rJava泛型類型
public class A<T> {
private B<T> b;
public A(B<T> b) {
this.b = b;
}
}
我想通過使已經創建(與實例化的類型參數)B的對象來創建使用.jnew()
R對話的一個目的,但是rJava總是給錯誤:
java.lang.NoSuchMethodError: <init>
有沒有解決此問題的方法?
當你調用'.jnew()'時,你使用的確切語法是什麼?你傳遞了它的參數嗎?請正確指定它們。 – Brick 2015-09-15 18:44:10
這是一個成功的例子。您需要從[here](http://www.phil.cmu.edu/projects/tetrad_download/download/tetrad-5.2.1-3.jar)(19mb)和示例數據集下載Tetrad jar, charity.txt,從[這裏](http://www.phil.cmu.edu/projects/tetrad_download/download/workshop/Data/charity.txt)。設置在R:'setwd(「where/you/put/the/data /」)', 'library(rJava)', '.jinit(「path/to/tetrad-5.2.1-3.jar 「)'。所有以下工作:1.'filename = .jnew(「java/lang/String」,「charity.txt」)',2.'datafile = .jnew(「java/io/File」,文件名)', 3.'reader = .jnew(「edu/cmu/tetrad/data/DataReader」)', – 2015-09-15 21:59:19
4.'delim = J(「edu/cmu/tetrad/data/DelimiterType」)',5.'reader $ setDelimiter (delim $ TAB)',6.'dataset = reader $ parseTabular(datafile)'。但以下方法不起作用:7.'gesinstance = .jnew(「edu/cmu/tetrad/search/Ges」,數據集)'。 reader $ parseTabular返回一個DataSet,並且Ges類應該使用DataSet參數創建。不幸的是,這是行不通的。我認爲這是因爲Ges實現了兩個接口GraphSearch和GraphScorer,GraphScorer只是一個接口。在Java源代碼中:'public interface GraphScorer double scoreDag(Graph dag); }' – 2015-09-15 22:04:32