2、对方提供接口文档和传输方式,根据接口文档调用。
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。1用接口工具去测试并传参调用;
2写应用接口,代码如下:
public static void main(String[] args) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactorynewInstance();
String wsUrl = ">读取器会按照这样的协议来读取:文件头是一个字符串列表,而记录集是一个字符串列表的列表。读取器接受一个javaioReader对象用为读取来源。 先从读取文件头开始。读取文件头的算法如下: - 打开资源准备读取。 - 读取第一行然后解析 - 将行按分隔符分割。 - 将该行转化成一个字符串列表后返回 下面是它的实现。
class CsvReader {
private static final String SEPARATOR = ";";
private final Reader source;
CsvReader(Reader source) {
this(source);
}
List<String> readHeader() {
try (BufferedReader reader = new BufferedReader(source)) {
return readerlines()
findFirst()
map(line -> ArraysasList(linesplit(SEPARATOR)))
get();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}
相当简单,自我解释型的。类似的,创建了一个方法来读取所有的记录。读取记录的算法如下:
打开资源文件进行读取
跳过首行
用分隔符分割行。
对每行应用一个map *** 作,将行映射到一个字符串列表
下面是它的实现:
class CsvReader {
List<List<String>> readRecords() {
try (BufferedReader reader = new BufferedReader(source)) {
return readerlines()
substream(1)
map(line -> ArraysasList(linesplit(separator)))
collect(CollectorstoList());
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}
会注意到两个方法中的map是几乎一样的。事实上,它可以提取到一个变量里面:
Function<String, List<String>> mapper
= line -> ArraysasList(linesplit(separator));
我写了个测试来完成整个过程。
public class CsvReaderTest {
@Test
public void readsHeader() {
CsvReader csvReader = createCsvReader();
List<String> header = csvReaderreadHeader();
assertThat(header)
contains("username")
contains("visited")
hasSize(2);
}
@Test
public void readsRecords() {
CsvReader csvReader = createCsvReader();
List<List<String>> records = csvReaderreadRecords();
assertThat(records)
contains(ArraysasList("jdoe", "10"))
contains(ArraysasList("kolorobot", "4"))
hasSize(2);
}
private CsvReader createCsvReader() {
try {
Path path = Pathsget("src/test/resources", "samplecsv");
Reader reader = FilesnewBufferedReader(
path, CharsetforName("UTF-8"));
return new CsvReader(reader);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)