1

我正在尝试学习基于 java 的程序,但我对 java 还是很陌生。我对以下两行java代码感到非常困惑。我想我的困惑来自于“class”和“cast”等概念,只是不知道如何分析。

对于这个

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

<Classified<CharSequence>>在 Java 编程方面有什么用?如何理解它与XValidatingObjectCorpus和的关系corpus

对于第二个

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

怎么理解右边LogisticRegressionClassifier.<CharSequence>trainLogisticRegressionClassifier.<CharSequence>train和 和有什么不一样LogisticRegressionClassifier<CharSequence> classifier

4

3 回答 3

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

Java 泛型教程

于 2012-04-06T03:08:42.467 回答
0

这些被称为泛型。他们告诉 Java使用内部对象的类型来创建外部类的一个实例——或者XValidatingObjectCorpus或者——。LogisticRegressionClassifier

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

XValidatingObjectCorpus和之间有什么关系corpus

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

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

我不知道,真的。我建议查看 API(我认为这是正确的类)。

LogisticRegressionClassifier.<CharSequence>train和 和有什么不一样LogisticRegressionClassifier<CharSequence> classifier

你不能真正比较这两者。左边的=是对象标识符,右边的是分配器(可能是错误的词,但它就是这样做的,有点)。

两者一起定义了 的实例LogisticRegressionClassifier,表示创建该类型的对象,调用它classifier,然后将train()方法返回的值赋予它。再次,查看 API 以进一步了解它。


顺便说一句,这些看起来像是学习 Java 的可怜例子。从简单的东西开始,或者至少是代码中更简单的部分。看起来有人用长名字玩得太开心了(API 有更长的名字)。不过说真的,我只是完全理解了这一点,而 Java 是我的主要语言有一段时间了(当你尝试做简单的事情时,它会变得非常混乱)。不管怎样,祝你好运!

于 2012-04-06T03:20:48.207 回答
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);


    }

}
于 2012-04-06T03:21:42.750 回答