关于两行java代码

时间:2012-04-06 03:04:25

标签: java

我正在尝试学习基于java的程序,但我对java很新。我对以下两行java代码感到困惑。我认为我的困惑来自包括“阶级”和“演员”在内的概念,但只是不知道如何分析。

对于这个

XValidatingObjectCorpus<Classified<CharSequence>> corpus
        = new XValidatingObjectCorpus<Classified<CharSequence>>(numFolds);

用于Java编程的<Classified<CharSequence>>是什么?如何理解与XValidatingObjectCorpuscorpus

的关系

第二个

LogisticRegressionClassifier<CharSequence> classifier
            = LogisticRegressionClassifier.<CharSequence>train(para1, para2, para3)

如何理解LogisticRegressionClassifier.<CharSequence>train的右侧? LogisticRegressionClassifier.<CharSequence>trainLogisticRegressionClassifier<CharSequence> classifier 之间有什么区别?

3 个答案:

答案 0 :(得分:0)

  • <Classified<CharSequence>>是一个通用参数。
  • LogisticRegressionClassifier<CharSequence>是通用类型。
  • LogisticRegresstionClassifier.<CharSequence>train是一种通用方法。

Java Generics Tutorial

答案 1 :(得分:0)

这些被称为generics。他们告诉Java使用内部对象的类型创建外部类的实例 - XValidatingObjectCorpusLogisticRegressionClassifier

通常,这些用于列表和数组,例如ArrayListHashMap

XValidatingObjectCorpuscorpus之间的关系是什么?

corpus只是您使用该语句创建的新XValidatingObjectCorpus对象的名称(因此= new...部分)。

LogisticRegressionClassifier.<CharSequence>train是什么意思?

我真的不知道。我建议looking at the API(我认为这是正确的课程)。

LogisticRegressionClassifier.<CharSequence>trainLogisticRegressionClassifier<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);


    }

}