JavaTM 2 Platform
Std. Ed. v1.3

java.awt.datatransfer
クラス DataFlavor

java.lang.Object
  |
  +--java.awt.datatransfer.DataFlavor
すべての実装インタフェース:
Cloneable, Externalizable, Serializable

public class DataFlavor
extends Object
implements Externalizable, Cloneable

各インスタンスは、クリップボード、ドラッグ&ドロップ中、またはファイルシステムで現れるデータ形式のあいまいな概念を表現します。

DataFlavor オブジェクトは定数で、一旦インスタンスを生成すると変更できません。

関連項目:
直列化された形式

フィールドの概要
static DataFlavor javaFileListFlavor
          Java (および基本となるプラットフォーム) 同士でファイルのリストを転送するには、このタイプまたはサブタイプの DataFlavor と、表現クラス java.util.List が使用されます。
static String javaJVMLocalObjectMimeType
          MIME タイプが関連していない任意の Java オブジェクトの参照に、参照を転送するために使います。
static String javaRemoteObjectMimeType
          リモートオブジェクトに、ドラッグ&ドロップによる ACTION_LINK オペレーションを介して有効なリンクを渡すには、MIME タイプに application/x-java-remote-object を使うようにしてください。
static String javaSerializedObjectMimeType
          application/x-java-serialized-object という MIME タイプは、永続化された Java オブジェクト (複数可) のグラフを表します。
static DataFlavor plainTextFlavor
          推奨されていません。 バージョン 1.3 では、Transferable.getTransferData(DataFlavor.plainTextFlavor) ではなく、DataFlavor.getReaderForText(Transferable) を使用してください。
static DataFlavor stringFlavor
          Java Unicode String クラスを表現する DataFlavor です。
 
コンストラクタの概要
DataFlavor()
          新しい DataFlavor を構築します。
DataFlavor(Class representationClass, String humanPresentableName)
          Java クラスを表現する DataFlavor を構築します。
DataFlavor(String mimeType)
          Mime タイプの文字列から DataFlavor を構築します。
DataFlavor(String mimeType, String humanPresentableName)
          MIME タイプを表現する DataFlavor を構築します。
DataFlavor(String mimeType, String humanPresentableName, ClassLoader classLoader)
          MIME タイプを表現する DataFlavor を構築します。
 
メソッドの概要
 Object clone()
          このオブジェクトのコピーを作成して返します。
 boolean equals(DataFlavor that)
          MIME プライマリタイプ、サブタイプ、表現クラスが同じ場合に限り、2 つの DataFlavors は同じものと見なされます。
 boolean equals(Object o)
          オブジェクトが DataFlavor のインスタンスの場合、representationClass と MIME タイプを比較します。
 boolean equals(String s)
          推奨されていません。 hashCode() 規約と一貫性がないため、代わりに isMimeTypeEqual(String) を使用します。
 Class getDefaultRepresentationClass()
           
 String getDefaultRepresentationClassAsString()
           
 String getHumanPresentableName()
          この DataFlavor が表現するデータ形式に対する、判読できる名前を返します。
 String getMimeType()
          この DataFlavor のための MIME タイプの文字列を返します。
 String getParameter(String paramName)
           
 String getPrimaryType()
           
 Reader getReaderForText(Transferable transferable)
          予想される文字セット (符号化) を複号化した入力ストリームのリーダを取得します。
 Class getRepresentationClass()
          この DataFlavor が要求されたときに、この DataFlavor をサポートしているオブジェクトが返すクラスを返します。
 String getSubType()
           
static DataFlavor getTextPlainUnicodeFlavor()
           
 int hashCode()
          DataFlavor にハッシュコードを返します。
 boolean isFlavorJavaFileListType()
           
 boolean isFlavorRemoteObjectType()
           
 boolean isFlavorSerializedObjectType()
           
 boolean isMimeTypeEqual(DataFlavor dataFlavor)
          パラメータのない 2 つの DataFlavor オブジェクトの MIME タイプを比較します。
 boolean isMimeTypeEqual(String mimeType)
          渡された MIME タイプの文字列表現がこの DataFlavor の MIME タイプと等しいかどうかを返します。
 boolean isMimeTypeSerializedObject()
          DataFlavor が、直列化されたオブジェクトを表すかどうかを判定します。
 boolean isRepresentationClassInputStream()
          DataFlavor が java.io.InputStream を表すかどうかを判定します。
 boolean isRepresentationClassRemote()
           
 boolean isRepresentationClassSerializable()
           
 boolean match(DataFlavor that)
          プライマリタイプ、サブタイプ、表現クラスが同じ場合に限り、2 つの DataFlavors は一致します。
protected  String normalizeMimeType(String mimeType)
          推奨されていません。  
protected  String normalizeMimeTypeParameter(String parameterName, String parameterValue)
          推奨されていません。  
 void readExternal(ObjectInput is)
          直列化された状態の DataFlavor を復元します。
static DataFlavor selectBestTextFlavor(DataFlavor[] availableFlavors)
           
 void setHumanPresentableName(String humanPresentableName)
          DataFlavor が表すデータ形式に対する、判読できる名前を設定します。
 String toString()
          DataFlavor とそのパラメータの文字列表現です。
protected static Class tryToLoadClass(String className, ClassLoader fallback)
          ブートストラップローダ、システムローダ、コンテキストローダ (存在する場合)、指定されたローダの順番でクラスのロードを試みます。
 void writeExternal(ObjectOutput os)
          DataFlavor を直列化します。
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

stringFlavor

public static final DataFlavor stringFlavor
Java Unicode String クラスを表現する DataFlavor です。

representationClass = java.lang.String
mimeType = "application/x-java-serialized-object"


plainTextFlavor

public static final DataFlavor plainTextFlavor
推奨されていません。 バージョン 1.3 では、Transferable.getTransferData(DataFlavor.plainTextFlavor) ではなく、DataFlavor.getReaderForText(Transferable) を使用してください。

Unicode エンコーディングでプレーンテキストを表現する DataFlavor です。

representationClass = InputStream
mimeType = "text/plain; charset=unicode"

DataFlavor は次の理由により推奨できません。(1) その表現が InputStream、8 ビット形式であるのに対し、Unicode は 16 ビット文字セットである。(2) charset「unicode」は明確になっていない。「unicode」は共通プラットフォームの実装ではなく Unicode の特定のプラットフォームの実装を意味している。


javaSerializedObjectMimeType

public static final String javaSerializedObjectMimeType
application/x-java-serialized-object という MIME タイプは、永続化された Java オブジェクト (複数可) のグラフを表します。 DataFlavor に関連した表現クラスにより、java.awt.datatransfer.getTransferData() の呼び出しにより参照として返されたオブジェクトの Java のデータタイプが特定されます。

javaFileListFlavor

public static final DataFlavor javaFileListFlavor
Java (および基本となるプラットフォーム) 同士でファイルのリストを転送するには、このタイプまたはサブタイプの DataFlavor と、表現クラス java.util.List が使用されます。 リストの各要素は、java.io.File 型であることが要求 (Java への転送の場合) または保証 (Java からの転送の場合) されます。

javaJVMLocalObjectMimeType

public static final String javaJVMLocalObjectMimeType
MIME タイプが関連していない任意の Java オブジェクトの参照に、参照を転送するために使います。転送は、Transferable インタフェースを介して同一の JVM の内部で行なわれ、このタイプ (またはサブタイプ) の DataFlavor が使用されます。また、Transferable を介して渡されたクラス (またはインタフェース) のタイプと同じ representationClass も一緒に使用されます。 この MIME タイプの DataFlavor に対して Transferable.getTransferData() から返されたオブジェクト参照は、DataFlavor の representationClass のインスタンスでなければなりません。

javaRemoteObjectMimeType

public static final String javaRemoteObjectMimeType
リモートオブジェクトに、ドラッグ&ドロップによる ACTION_LINK オペレーションを介して有効なリンクを渡すには、MIME タイプに application/x-java-remote-object を使うようにしてください。このとき、DataFlavor の representationClass は、転送されるリモートインタフェースのタイプを表します。
コンストラクタの詳細

DataFlavor

public DataFlavor()
新しい DataFlavor を構築します。コンストラクタは Externalizable インタフェースをサポートする目的のためだけに提供されます。public (クライアント) 使用を目的とはしていません。
導入されたバージョン:
1.2

DataFlavor

public DataFlavor(Class representationClass,
                  String humanPresentableName)
Java クラスを表現する DataFlavor を構築します。

次のような性質を持つ DataFlavor が返されます。

representationClass = representationClass
mimeType = application/x-java-serialized-object

パラメータ:
representationClass - このフレーバでデータを転送するのに使用するクラス
humanPresentableName - このフレーバを識別するために使用される判読できる文字列。パラメータが null の場合は、MIME タイプの値を使用

DataFlavor

public DataFlavor(String mimeType,
                  String humanPresentableName)
MIME タイプを表現する DataFlavor を構築します。

次のような性質を持つ DataFlavor が返されます。

mimeType が "application/x-java-serialized-object; class=<代表クラス>" の場合、次の呼び出しと同じ結果になります。new DataFlavor(Class:forName(<代表クラス>)

そうでない場合は、次のようになります。

representationClass = InputStream
mimeType = mimeType

パラメータ:
mimeType - このフレーバの MIME タイプを識別するのに使用される文字列。mimeType が "class=" パラメータを指定しない場合、またはクラスのロードに失敗した場合は、IllegalArgumentException がスローされる
humanPresentableName - このフレーバを識別するために使用される判読できる文字列。パラメータが null の場合は、MIME タイプの値を使用

DataFlavor

public DataFlavor(String mimeType,
                  String humanPresentableName,
                  ClassLoader classLoader)
           throws ClassNotFoundException
MIME タイプを表現する DataFlavor を構築します。

次のような性質を持つ DataFlavor が返されます。

mimeType が "application/x-java-serialized-object; class=<表現クラス>" の場合、次の呼び出しと同じ結果になります。new DataFlavor(Class:forName(<表現クラス>)

そうでない場合は、次のようになります。

representationClass = InputStream
mimeType = mimeType

パラメータ:
mimeType - このフレーバの MIME タイプを識別するために使用される文字列
humanPresentableName - このフレーバを識別するために使用される判読できる文字列

DataFlavor

public DataFlavor(String mimeType)
           throws ClassNotFoundException
Mime タイプの文字列から DataFlavor を構築します。文字列は "class=" パラメータを指定し、指定した表現クラスで DataFlavor を作成できます。文字列に "class=" パラメータが含まれない場合は、デフォルトとして java.io.InputStream を使用します。
パラメータ:
mimeType - このフレーバの MIME タイプを識別するのに使用される文字列。"class=" パラメータが指定したクラスのロードに失敗した場合は、IllegalArgumentException がスローされる
メソッドの詳細

tryToLoadClass

protected static final Class tryToLoadClass(String className,
                                            ClassLoader fallback)
                                     throws ClassNotFoundException
ブートストラップローダ、システムローダ、コンテキストローダ (存在する場合)、指定されたローダの順番でクラスのロードを試みます。
パラメータ:
fallback - 代替用ローダ
例外:
ClassNotFoundException -  

toString

public String toString()
DataFlavor とそのパラメータの文字列表現です。生成された結果には、DataFlavor クラス、表現クラスおよび Flavor の MIME タイプの名前が含まれます。
オーバーライド:
クラス Object 内の toString
戻り値:
DataFlavor の文字列表現

getTextPlainUnicodeFlavor

public static final DataFlavor getTextPlainUnicodeFlavor()

selectBestTextFlavor

public static final DataFlavor selectBestTextFlavor(DataFlavor[] availableFlavors)
戻り値:
JDK がサポートする符号化の最適 (最適合) フレーバ。ない場合は null

getReaderForText

public Reader getReaderForText(Transferable transferable)
                        throws UnsupportedFlavorException,
                               IOException
予想される文字セット (符号化) を複号化した入力ストリームのリーダを取得します。フレーバの表現クラスが java.io.InputStream (または、サブクラス) の場合にのみ機能します。表現クラスが Reader の場合、結果はクラスそのものとなります。
戻り値:
データを読み込む Reader
例外:
IllegalArgumentException - 表現クラスが java.io.InputStream または java.lang.String でない場合
IllegalArgumentException - JDK がその文字セット (文字符号化) をサポートしていない場合
IllegalArgumentException - 転送可能データが null の場合
NullPointerException - 転送可能引数が null の場合
UnsupportedEncodingException - フレーバが符号化をサポートしていない場合
UnsupportedFlavorException - 転送可能データがこのフレーバをサポートしていない場合
IOException - 入出力エラーでデータの読み込みができない場合

getMimeType

public String getMimeType()
この DataFlavor のための MIME タイプの文字列を返します。

getRepresentationClass

public Class getRepresentationClass()
この DataFlavor が要求されたときに、この DataFlavor をサポートしているオブジェクトが返すクラスを返します。

getHumanPresentableName

public String getHumanPresentableName()
この DataFlavor が表現するデータ形式に対する、判読できる名前を返します。この名前は、それぞれの国に応じて地域に対応します。

getPrimaryType

public String getPrimaryType()
戻り値:
DataFlavor のプライマリ MIME タイプ

getSubType

public String getSubType()
戻り値:
DataFlavor の MIME サブタイプ

getParameter

public String getParameter(String paramName)
戻り値:
名前パラメータの値

setHumanPresentableName

public void setHumanPresentableName(String humanPresentableName)
DataFlavor が表すデータ形式に対する、判読できる名前を設定します。この名前は、それぞれの国に応じて地域に対応した名前になります。

equals

public boolean equals(Object o)
オブジェクトが DataFlavor のインスタンスの場合、representationClass と MIME タイプを比較します。このメソッドは equals(String) メソッドを使用しないため、String 型のオブジェクトに true を返しません。
オーバーライド:
クラス Object 内の equals
戻り値:
オブジェクトが等しいかどうか

equals

public boolean equals(DataFlavor that)
MIME プライマリタイプ、サブタイプ、表現クラスが同じ場合に限り、2 つの DataFlavors は同じものと見なされます。さらに、プライマリタイプが「テキスト」の場合は、文字セットパラメータも同じである必要があります。いずれかの DataFlavor が プライマリタイプの「テキスト」で文字セットが指定されていない場合は、プラットフォームのデフォルト文字セットは、その DataFlavor と見なされます。
戻り値:
DataFlavor がまったく同じ型を表すかどうか

equals

public boolean equals(String s)
推奨されていません。 hashCode() 規約と一貫性がないため、代わりに isMimeTypeEqual(String) を使用します。

MIME タイプのみ渡された String と比較し、representationClass は比較しません。representationClass を比較する必要がある場合は equals(new DataFlavor(s)) を使用します。
戻り値:
MIME タイプを表す文字列が等しいかどうか

hashCode

public int hashCode()
DataFlavor にハッシュコードを返します。2 つの DataFlavors が同じ場合は、ハッシュコードは同じです。DataFlavor.equals(String) と一致する String の場合は、DataFlavor のハッシュコードが String のハッシュコードと同じかどうかは保証できません。
オーバーライド:
クラス Object 内の hashCode
戻り値:
DataFlavor のハッシュコード

match

public boolean match(DataFlavor that)
プライマリタイプ、サブタイプ、表現クラスが同じ場合に限り、2 つの DataFlavors は一致します。さらに、プライマリタイプが「テキスト」の場合は、文字セットパラメータも同じです。いずれかの DataFlavor が プライマリタイプの「テキスト」で文字セットが指定されていない場合は、プラットフォームのデフォルト文字セットは、その DataFlavor と見なされます。

isMimeTypeEqual

public boolean isMimeTypeEqual(String mimeType)
渡された MIME タイプの文字列表現がこの DataFlavor の MIME タイプと等しいかどうかを返します。パラメータは比較されません。いくつかの MIME タイプに対してはデフォルトの属性を追加します (charset パラメータが指定されていない text/plain という MIME タイプに charset=US-ASCII を追加するなど)。パラメータとして null が渡されると、false が返されます。
戻り値:
渡された MIME タイプの文字列表現が、この DataFlavor の MIME タイプと同じ場合

isMimeTypeEqual

public final boolean isMimeTypeEqual(DataFlavor dataFlavor)
パラメータのない 2 つの DataFlavor オブジェクトの MIME タイプを比較します。
戻り値:
MIME タイプが等しいかどうか

isMimeTypeSerializedObject

public boolean isMimeTypeSerializedObject()
DataFlavor が、直列化されたオブジェクトを表すかどうかを判定します。

getDefaultRepresentationClass

public final Class getDefaultRepresentationClass()

getDefaultRepresentationClassAsString

public final String getDefaultRepresentationClassAsString()

isRepresentationClassInputStream

public boolean isRepresentationClassInputStream()
DataFlavor が java.io.InputStream を表すかどうかを判定します。

isRepresentationClassSerializable

public boolean isRepresentationClassSerializable()
戻り値:
表現クラスを直列化できる場合は true

isRepresentationClassRemote

public boolean isRepresentationClassRemote()
戻り値:
表現クラスが Remote の場合は true

isFlavorSerializedObjectType

public boolean isFlavorSerializedObjectType()
戻り値:
指定された DataFlavor が直列化されたオブジェクトを表すかどうか

isFlavorRemoteObjectType

public boolean isFlavorRemoteObjectType()
戻り値:
指定された DataFlavor が Remote Object を表すかどうか

isFlavorJavaFileListType

public boolean isFlavorJavaFileListType()
戻り値:
指定されたフレーバがファイルリストオブジェクトを表すかどうか

writeExternal

public void writeExternal(ObjectOutput os)
                   throws IOException
DataFlavor を直列化します。
定義:
インタフェース Externalizable 内の writeExternal
インタフェース java.io.Externalizable からコピーされたタグ:
パラメータ:
out - オブジェクトを書き込むストリーム
例外:
IOException - 発生する可能性があるすべての入出力例外

readExternal

public void readExternal(ObjectInput is)
                  throws IOException,
                         ClassNotFoundException
直列化された状態の DataFlavor を復元します。
定義:
インタフェース Externalizable 内の readExternal
インタフェース java.io.Externalizable からコピーされたタグ:
パラメータ:
in - オブジェクトを復元するためのデータ読み取り元のストリーム
例外:
IOException - 入出力エラーが発生した場合
ClassNotFoundException - 復元しようとしてるオブジェクトに対応するクラスが見つからない場合

clone

public Object clone()
             throws CloneNotSupportedException
クラス Object の記述:
このオブジェクトのコピーを作成して返します。「コピー」の正確な意味合いは、オブジェクトのクラスによって異なります。一般的には、任意のオブジェクト x について、次の式
 x.clone() != x
が true であり、次の式
 x.clone().getClass() == x.getClass()
true であることですが、これらも絶対的な要件ではありません。また次の式
 x.clone().equals(x)
も通常は true になりますが、これも絶対的な要件ではありません。オブジェクトのコピーでは一般に、コピー対象オブジェクトのクラスのインスタンスを新しく生成することになります。このとき、内部データ構造のコピーが必要な場合もあります。コンストラクタは呼び出されません。

Object クラスの clone メソッドは、特定の複製処理を実行します。まず、このオブジェクトのクラスが Cloneable インタフェースを実装していない場合は、CloneNotSupportedException がスローされます。配列はすべて、インタフェース Cloneable を実装しているものと見なされることに注意してください。実装していない場合、このメソッドはこのオブジェクトのクラスの新しいインスタンスを生成し、そのフィールドをすべて、このオブジェクトの対応する各フィールドの内容で初期化します。これは代入と同様で、フィールドの内容自身が複製されるのではありません。つまりこのメソッドは、オブジェクトのシャローコピーを生成しますが、ディープコピーは生成しません。

Object クラス自身は、Cloneable インタフェースを実装しません。このため、クラスが Object であるオブジェクトで clone メソッドを呼び出すと、結果として実行時に例外がスローされます。Object クラスは、Cloneable インタフェースを実装するサブクラスによって使われる簡易汎用ユーティリティとして clone メソッドを実装しています。サブクラスは、この clone をオーバーライドできますが、その場合、オーバーライド側の定義は、次に示す呼び出しでこのユーティリティ定義を参照できます。

 super.clone()
オーバーライド:
クラス Object 内の clone
戻り値:
この DataFlavor の複製

normalizeMimeTypeParameter

protected String normalizeMimeTypeParameter(String parameterName,
                                            String parameterValue)
推奨されていません。  

DataFlavor サブクラスが、大文字と小文字を区別しないプレーンテキスト charset パラメータなど、特殊なパラメータを取り扱えるようにするために、すべての MIME タイプのパラメータに対する DataFlavor について呼び出されます (MIME タイプのパラメータは大文字と小文字を区別するようにサポートされている)。

このメソッドは各パラメータ名とパラメータ値のペアに対して呼び出され、parameterValue の正規化された表現を返さなければなりません。 1.1 以降では、このメソッドがこの実装によって呼び出されることはありません。


normalizeMimeType

protected String normalizeMimeType(String mimeType)
推奨されていません。  

DataFlavor サブタイプに、MIME タイプの正規化達成方法を変更する機会を与えるために、各 MIME タイプに対して呼び出されます。MIME タイプの文字列を渡すものがない場合に、デフォルトのパラメータ/値のペアを追加するために使用することもあります。 1.1 以降では、このメソッドがこの実装によって呼び出されることはありません。

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.