How to call API in Java

关于一些库调用的一些看法:java

总的来讲就是一句话:我要的是结果,函数须要什么我给什么!我就拿java来讲吧!编程

java是面向对象的编程语言,就我们学过的C++来讲,多态是一种高级的编程技术,实际就是利用继承,父类指针能够接受指向子类的指针,从而根据不一样的子类指针调用不一样的子类相应的函数,这就实现了多态!在java中,在很大程度上就是给函数能有一个参数,参数最可怕的就是让你传进去一个对象!下面我就举个具体的例子!编程语言

建立一个BufferedReader对象!那么你能够查API找到BufferedReader函数

查到的构造函数以下!ui

BufferedRreaderReader in);spa

BufferedReaderReader inint sz);指针

也就是说要构建一个BufferedReader类必须给它传递一个Reader 的对象,那咱们就查一下Reader查得的结果是:code

 

public abstract class Reader
extends Object
implements Readable, Closeable
 
一看这个类是个抽象的类,继承于Object 实现了接口Readable CloseAble  再查其成员函数,发现有好几个抽象的成员函数!要想建立一个Reader对象,要么咱本身继承一下Reader而后实现其几个抽象的接口成员函数,要么找非抽象的子类!对于java来讲,我们都知道,什么都封装的好好的了,内部的细节咱们无法下手去本身编写(必定程度上把咱们变的脑残了,这就是我学java有一种受制于人的感受的缘由),因此咱们得找其子类!因而乎我又在Reader的继承关系图上看到了这个!

直接已知子类: 对象

BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader 继承

这真是惊喜啊,这就意味着咱们不用本身去实现了,那咱们就挑一个吧,挑谁呢,好吧,就挑InputStreamReader吧,咱查InputStreamReader的详细说明!

咱们能够看见这个

public class InputStreamReader
extends Reader

还好这不是一个抽象类,否则咱们还得找这个类的孩子给他老爸!紧接着查其构造函数

构造方法摘要

InputStreamReader(InputStream in)
          
建立一个使用默认字符集的 InputStreamReader

 

InputStreamReader(InputStream in, Charset cs)
          
建立使用给定字符集的 InputStreamReader

 

InputStreamReader(InputStream in, CharsetDecoder dec)
          
建立使用给定字符集解码器的 InputStreamReader

 

InputStreamReader(InputStream in, String charsetName)
          
建立使用指定字符集的 InputStreamReader

 

一看,个人妈呀,怎么还须要一个InputStream类的对象呢,那行你不是须要一个InputStream 类的对象才肯给我一个InputStreamReader的对象吗,那行,咱有求与你,我忍,我给,再查InputStream 类,在java API查得结果以下:

public abstract class InputStream
extends Object
implements Closeable
天啊,咋仍是个抽象类呢 ,看来这回玩的有点大了啊!这确定又须要找它的儿子了(子类)
因而咱们看见了这个:

直接已知子类:

AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream

 
那咱就拿FileInputStream 开刀吧,发现其构造函数以下:

构造方法摘要

FileInputStream(File file)
          
经过打开一个到实际文件的链接来建立一个 FileInputStream,该文件经过文件系统中的 File 对象 file 指定。

 

FileInputStream(FileDescriptor fdObj)
          
经过使用文件描述符 fdObj 建立一个 FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有链接。

 

FileInputStream(String name)
          
经过打开一个到实际文件的链接来建立一个 FileInputStream,该文件经过文件系统中的路径名 name 指定。

 

那咱就拿最后一个来讲事,不就是一个String 类吗,我给,好比说这个文件的名字就叫

Xiaohong吧,那么咱们就能够获得一个FileInputStream类得对象了:

即:

String name = "xiaohong

 FileInputStream Xiao = new FileInputStream(name);

 好了,咱们再回到上一层

 对InputStreamReader 它的构造函数以下

InputStreamReader(InputStream in)(只列出了这个)!

你不是要一个InputStream 类的对象才会给我一个InputStreamReader的对象吗,那好,我如今已经有了,虽然这个类不是直接的InputStream类,可是吧我得到的这个类的对象

Xiao是继承于InputStream的,根据多态,这个能够的,其实用

InputStream做为参数的目的也在这里

因此我能够用以下建立一个InputStreamReader对象:

InputStreamReader Xiaohong = new InputStreamReaderXiao);

 

这时候我们再回到上一层:就是咱想要建立的:

BufferedReader(Reader in) ;由于InputStreamReader 继承于Reader 因此建立

BufferedReader 的一个对象就能够这么建立了:

BufferedReader CuiXiaohong = new BufferedReader(Xiaohong);

到此咱们的BufferedReader对象便建立了出来:

在这个过程当中咱们一直秉承着你要什么我给什么的原则,最终建立出了一个CuiFangFang ,是否是挺简单的,我没学过Andriod 可是我感受既然它的开发语言既然是java ,我想大概的调用思路就是这样的:

 

在上述过程当中,即便我不知道其余的类时干什么的,可是我仍是能够达到我建立BufferedReader的这个目的,你有新的类我就查!固然在这个过程当中,对多态要有必定的掌握(我想既然你学过C++这个问题就不是问题了,对于抽象类的具体做用,我想在这个过程当中,基本上你也应该清楚了)!

 

其实java中能够利用native 关键字来利用C、或者C++的,其实真正的内部实现仍是咱CC++作,不信你能够查源码,关键的部分全是CC++ 去实现的!
相关文章
相关标签/搜索