ジェネリック
1、ジェネリックの概念
汎用Javaは、基本的データ型の動作は、このクラスは、インターフェイスで使用することができるパラメータ(タイプ・パラメータ)のパラメータ・タイプとして指定されていると言うことでパラメータ化された型であり、J2 SE1.5導入された新機能であり、そしてジェネリッククラス、ジェネリックインターフェイス、ジェネリックメソッドと呼ばれるメソッドを作成します。
2、コレクション内のジェネリック医薬品の使用、要約:
①、またはインターフェイスJDK5ベルト構造のセット内のクラスのセットは、汎用性を有するように改変されます
②、注意:ジェネリック型はクラスではなく、基本的なデータ型でなければなりません。
③、インスタンス化場合は、ジェネリック型が指定されていません。デフォルトのタイプはjava.lang.Objectのタイプです
3、ジェネリック医薬品の使用が注目されるべきです。
①、静的メソッドは、(最初のオブジェクトの再利用を作成する一般的な必要がある)、一般的なように使用することができません
②、例外は汎用的なクラスで使用することはできません
図4に示すように、一般的な方法で再使用される以下の通りであります:
//泛型方法:在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系
public <E> list<E> copyFromArrayToList(E[] arr){
ArrayList<E> list = new ArrayList<>();
for(E e : arr){
list.add(e);
}
return list;
}
図5に示すように、ジェネリック医薬品の連続的に反映
- クラスCは、クラスDの親クラスであるが、G <C>とG <D>両方の親子関係を持っていませんが、以下のように、両方のは、並置された関係です。
List<Object> list1 = null;
List<String> list2 = null;
//此时的list1和list2的类型不具有子父类关系
list1 = list2;(报错)
反证法:
假设list1 = list2
list.add(123);//导致混入非String的数据,出错
注:Cは、クラスDの親クラスであり、C <G>がD <G>親クラス、次のように
AbstarctList<String> list1 = null;
List<String> list2 = null;
ArrayList<String> list3 = null;
list1 = list3;
list2 = list3;
6、ワイルドカードを使用して
-
ワイルドカード:?
クラスは、クラスB、G <C>とG <D>のスーパークラスである関連していない、両方の共通の親クラスがある:G <?>追加:リストが内部データに追加することはできません、ヌルを追加することに加えて、<?>
取得し(読み出し):読み取りデータ型のオブジェクト、データを読み取ることができます
-
ワイルドカードの使用に制限がある
?Cを拡張:
Gは、G <C>、DはCのサブクラスである親クラスのG <D>として<?Cが伸び>?スーパーC:
G <スーパーC?>としてG <C>、DはCの親である親クラスのG <D>
Fileクラスを使用します。
1、Fileクラスのオブジェクトは、ファイルまたは(:フォルダとして一般に知られている)ディレクトリを表します。
2、パッケージjava.ioのFileクラスの宣言
①、Fileクラスのインスタンスを作成する方法
File(String filePath);
File(String parentPath, String childPath);
File(File parentFile, String childPath);
②、相対パス:特定の経路に比べて、パス指定
絶対パス:を含む、文字が含まれているファイルまたはディレクトリへのパスを
③、パス区切り
windows : \\
unix : /
3、Fileクラスの取得機能
public String getAbsolutePath(): 获取绝对路径
public String getPath(): 获取路径
public String getName():获取名称
public String getParent():获取上层文件目录路径。若无,返回null
public long length():获取文件长度(字节数)。不能获取目录的长度
public long lastModified():获取最后一次的修改时间,毫秒值
public String[] list():获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles():获取指定目录下的所有文件或者文件目录的File数组
public boolean renameTo(File dest):吧文件重命名为指定的文件路径比如:file1.renameTo(file2)为例:要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在
public boolean isDirectory():判断是否是文件目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判读是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
pulic boolean createNewFile():创建文件。若文件存在,则不创建,返回false
public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建
public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建
public boolean delete():删除文件或文件夹(注意:Java中的删除不走回收站)