Java 请帮我理解这行代码

Java 请帮我理解这行代码,java,object,csv,io,Java,Object,Csv,Io,据我所知,算法是: FileReader对象被传递给BufferedReader构造函数 BufferedReader对象被传递给CSVParser构造函数。这将是传递给csvParser的两个参数之一 第二个csvParser参数是CSVFormat.newFormat(“|”) 这一行会被认为是传递给csvParser对象的两个参数吗?这两个参数然后在csvParser构造函数中使用?我已经看过了javadocs,但无法理解如何将所有这些片段组合在一起来实例化CSVParser。首先,你怎么

据我所知,算法是:

  • FileReader对象被传递给BufferedReader构造函数
  • BufferedReader对象被传递给CSVParser构造函数。这将是传递给csvParser的两个参数之一
  • 第二个csvParser参数是CSVFormat.newFormat(“|”)

  • 这一行会被认为是传递给csvParser对象的两个参数吗?这两个参数然后在csvParser构造函数中使用?我已经看过了javadocs,但无法理解如何将所有这些片段组合在一起来实例化CSVParser。首先,你怎么知道这是可能的?我已经参加了几周的java初学者课程,我从来没有见过这样的课程。有人能给我解释一下这句话是怎么运作的,就像你在和一个5岁的孩子说话一样

    据我所知,你说得对

    这个程序员调用构造函数来代替声明正确类型的对象,实例化对象以放入对象变量,然后使用变量。也可以写为:

    CSVParser csvParser = null;
    String csvFilename = "C:\\Users\\ITEM.txt20141022";
    
    
    csvParser = new CSVParser(new BufferedReader(new FileReader(csvFilename)), CSVFormat.newFormat('|'));
    
    我假设第一个方法调用返回的类型


    希望这更清楚。这就是我应该如何编写它的…

    CSVParser构造函数接受两个参数,如下所示:

    CSVFormat format = CSVFormat.newFormat('|');
    FileReader reader = new FileREader(csvFilename);
    BufferedReader bReader = new BufferedReader(reader);
    CSVParser parser = new CSVParser(bReader, format);
    

    现在仔细地遵循代码,应该很容易理解,注意括号

    您可以查看CSVParser的javadoc,看到它有一个构造函数接受BufferedReader或Reader作为第一个参数,并且可能接受CSVFormat(假设这是由
    newFormat()
    返回的)作为第二个参数。有几十个不同的类命名为CSVParser,所以我们不知道您使用的是哪一个。在我看来,您已经找到了答案。哪个
    CSVParser
    是这个,来自apachecommons的吗?是的,我正在使用apachecommons。我听说如果可能的话,建议这样做。这是正确的吗?如果可以,请使用apache commons类。我得到的解释是,这是千真万确的,所以更容易理解。哇,谢谢你。现在我需要研究他是如何缩短的。再次感谢。@stackoverflow1这对语言新手来说比较容易。但是,只要有一点Java经验的开发人员都能很好地理解您的原始代码。有经验的Java开发人员可能会发现“简化”代码过于冗长,并且引入了无用的变量。我已经用Java编程15年了,我仍然觉得原版更容易理解、调试,并确保正确无误。引入变量的唯一区别是显式变量是可见的。它们不占用额外的内存空间,编译时间可以忽略不计,等等——第一种方法没有技术原因,第二种方法有几个软件工程原因。例如:这给了作者一个命名参数的机会,以便它们更好地描述事物。缺少额外变量意味着不必为每个变量声明类型?为什么这是可能的?它像unix中的管道一样吗?因为Java是强类型的,构造函数和方法都返回一个特定类型的对象(或者方法可以返回null,在这种情况下不有用)。构造或返回的对象还匹配其他类型——任何超类和任何实现的接口。当其中一个的结果用作参数时,编译器会花费一些时间来确定匹配的类型是否与被调用的构造函数匹配(或帮助确定要调用的构造函数)。
    CSVParser(Reader reader, CSVFormat format)