我正在尝试学习基于java的程序,但我对java很新。我对以下两行java代码感到困惑。我认为我的困惑来自包括“阶级”和“演员”在内的概念,但只是不知道如何分析。
对于这个
XValidatingObjectCorpus<Classified<CharSequence>> corpus
= new XValidatingObjectCorpus<Classified<CharSequence>>(numFolds);
用于Java编程的<Classified<CharSequence>>
是什么?如何理解与XValidatingObjectCorpus
和corpus
第二个
LogisticRegressionClassifier<CharSequence> classifier
= LogisticRegressionClassifier.<CharSequence>train(para1, para2, para3)
如何理解LogisticRegressionClassifier.<CharSequence>train
的右侧? LogisticRegressionClassifier.<CharSequence>train
和LogisticRegressionClassifier<CharSequence> classifier
之间有什么区别?
答案 0 :(得分:0)
<Classified<CharSequence>>
是一个通用参数。LogisticRegressionClassifier<CharSequence>
是通用类型。LogisticRegresstionClassifier.<CharSequence>train
是一种通用方法。答案 1 :(得分:0)
这些被称为generics。他们告诉Java使用内部对象的类型创建外部类的实例 - XValidatingObjectCorpus
或LogisticRegressionClassifier
。
通常,这些用于列表和数组,例如ArrayList或HashMap。
XValidatingObjectCorpus
和corpus
之间的关系是什么? corpus
只是您使用该语句创建的新XValidatingObjectCorpus
对象的名称(因此= new...
部分)。
LogisticRegressionClassifier.<CharSequence>train
是什么意思?我真的不知道。我建议looking at the API(我认为这是正确的课程)。
LogisticRegressionClassifier.<CharSequence>train
和LogisticRegressionClassifier<CharSequence> classifier
之间的区别是什么?你无法真正比较这两者。 =
左侧的那个是对象标识符,右边的那个是分配器(可能是错误的单词,但它是什么它确实如此。
两者一起定义LogisticRegressionClassifier
的实例,说要创建该类型的对象,将其称为classifier
,然后为其赋予train()
方法返回的值。再次,请查看API以了解更多信息。
顺便说一句,这些看起来像是学习Java的可怜的例子。从简单的东西开始,或者至少是代码的一部分。看起来有人对长名称有太多的乐趣(API甚至更长的名字)。但是说真的,我只是完全理解这一点,Java是我的主要语言已经有一段时间了(当你尝试做简单的事情时,它会变得非常混乱)。祝你好运!
答案 2 :(得分:0)
public class Sample<T> { // T implies Generic implementation, T can be substituted with any object.
static <T> Sample<T> train(int par1, int par2, int par3){
return new Sample<T>(); // you are calling the Generic method to return Sample object which works with a particular type of generic object, may it be an Integer or a CharSequence. --> see the main method.
}
public static void main(String ... a)
{
int par1 = 0, par2 = 0, par3 = 1;
// Here you are returning Sample object which works with a sequence of characters.
Sample<CharSequence> sample = Sample.<CharSequence>train(par1, par2, par3);
// Here you are returning Sample object which works with Integer values.
Sample<CharSequence> sample1 = Sample.<Integer>train(par1, par2, par3);
}
}