JavaTM Platform
Standard Ed. 6

java.awt.datatransfer
类 DataFlavor

java.lang.Object
  继承者 java.awt.datatransfer.DataFlavor
所有已实现的接口:
Externalizable, Serializable, Cloneable
直接已知子类:
ActivationDataFlavor

public class DataFlavor
extends Object
implements Externalizable, Cloneable

DataFlavor 提供有关数据的元信息。DataFlavor 通常用于访问剪切板上的数据,或者在执行拖放操作时使用。

DataFlavor 实例封装 RFC 2045RFC 2046 中定义的内容类型。内容类型通常被称为 MIME 类型。

内容类型由媒体类型(被称为基本类型)、子类型和可选参数组成。关于 MIME 类型的语法的详细信息,请参阅 RFC 2045

JRE 数据传输实现将 MIME 类型的参数 "class" 解释为一个表示形式类。表示形式类反映将被传输的对象的类。换句话说,表示形式类是由 Transferable.getTransferData(java.awt.datatransfer.DataFlavor) 返回的对象的类型。例如,imageFlavor 的 MIME 类型是 "image/x-java-image;class=java.awt.Image",基本类型是 image,子类型是 x-java-image,表示形式类是 java.awt.Image。当调用 getTransferData,且 DataFlavorimageFlavor 时,返回 java.awt.Image 的实例。要重点注意的是,DataFlavor 不会依据表示形式类进行任何错误检查。由 DataFlavor 的使用者(如 Transferable)决定是否遵守表示形式类。
注意,如果在创建 DataFlavor 时没有指定表示形式类,则使用默认表示形式类。有关 DataFlavor 的构造方法,请参阅适当的文档。

此外,具有 "text" 基本 MIME 类型的 DataFlavor 实例可能有一个 "charset" 参数。有关 "text" MIME 类型和 "charset" 参数的详细信息,请参阅 RFC 2046selectBestTextFlavor(java.awt.datatransfer.DataFlavor[])

DataFlavors 的相等性由基本类型、子类型和表示形式类决定。有关详细信息,请参阅 equals(DataFlavor)。在确定相等性时,所有可选参数都被忽略。例如,以下代码产生的两个 DataFlavors 被认为是相等的:

   DataFlavor flavor1 = new DataFlavor(Object.class, "X-test/test; class=<java.lang.Object>; foo=bar");
   DataFlavor flavor2 = new DataFlavor(Object.class, "X-test/test; class=<java.lang.Object>; x=y");
   // The following returns true.
   flavor1.equals(flavor2);
 
正如上面提到的那样,flavor1flavor2 被认为是相等的。同样地,请求 TransferableDataFlavor 将返回相同的结果。

有关在 Swing 中使用数据传输的更多信息,请参阅 Java Tutorial 中的 How to Use Drag and Drop and Data Transfer 一节。

另请参见:
序列化表格

字段摘要
static DataFlavor imageFlavor
          DataFlavor 表示 Java Image 类,其中:
static DataFlavor javaFileListFlavor
          要将文件列表传入 Java(及底层平台)或从中传出,需要使用此类型/子类型的 DataFlavorjava.util.List 的表示形式类。
static String javaJVMLocalObjectMimeType
          要将一个引用传输到不具有关联 MIME Content 类型的任意 Java 对象引用(跨越同一 JVM 中的 Transferable 接口),需要使用具有此类型/子类型的 DataFlavor,其中 representationClass 等于跨越 Transferable 传递的类/接口的类型。
static String javaRemoteObjectMimeType
          为了通过拖放 ACTION_LINK 操作将活动链接传递到 Remote 对象,应该使用 Mime Content 类型的 application/x-java-remote-object,其中 DataFlavor 的表示形式类表示要传输的 Remote 接口的类型。
static String javaSerializedObjectMimeType
          MIME Content 类型的 application/x-java-serialized-object 表示已变得持久的 Java 对象的图形。
static DataFlavor plainTextFlavor
          已过时。 从 1.3 开始。使用 DataFlavor.getReaderForText(Transferable) 代替 Transferable.getTransferData(DataFlavor.plainTextFlavor)
static DataFlavor stringFlavor
          DataFlavor 表示 Java Unicode String 类,其中:
 
构造方法摘要
DataFlavor()
          构造一个新的 DataFlavor
DataFlavor(Class<?> representationClass, String humanPresentableName)
          构造一个表示 Java 类的 DataFlavor
DataFlavor(String mimeType)
          根据 mimeType 字符串构造 DataFlavor
DataFlavor(String mimeType, String humanPresentableName)
          构造一个表示 MimeTypeDataFlavor
DataFlavor(String mimeType, String humanPresentableName, ClassLoader classLoader)
          构造一个表示 MimeTypeDataFlavor
 
方法摘要
 Object clone()
          返回此 DataFlavor 的副本。
 boolean equals(DataFlavor that)
          测试 DataFlavor 与此 DataFlavor 的相等性。
 boolean equals(Object o)
          测试任意 Object 与此 DataFlavor 的相等性。
 boolean equals(String s)
          已过时。 hashCode() 协定不一致,使用 isMimeTypeEqual(String) 代替。
 Class<?> getDefaultRepresentationClass()
           
 String getDefaultRepresentationClassAsString()
           
 String getHumanPresentableName()
          返回此 DataFlavor 表示的数据格式的得体的名称。
 String getMimeType()
          返回此 DataFlavor 的 MIME 类型字符串。
 String getParameter(String paramName)
          如果 paramName 等于 "humanPresentableName",则返回此 DataFlavor 的得体的名称。
 String getPrimaryType()
          返回此 DataFlavor 的基本 MIME 类型。
 Reader getReaderForText(Transferable transferable)
          获取文本 flavor 的 Reader,如果需要,则为期望的 charset(编码的)解码。
 Class<?> getRepresentationClass()
          返回请求此 DataFlavor 时,支持此 DataFlavor 的对象将返回的 Class
 String getSubType()
          返回此 DataFlavor 的子 MIME 类型。
static DataFlavor getTextPlainUnicodeFlavor()
          返回表示具有 Unicode 编码的纯文本的 DataFlavor,其中: representationClass = java.io.InputStream mimeType = "text/plain; charset=<platform default Unicode encoding>" Sun 的 Microsoft Windows 实现使用编码 utf-16le
 int hashCode()
          返回此 DataFlavor 的哈希码。
 boolean isFlavorJavaFileListType()
          如果指定的 DataFlavor 表示 File 对象列表,则返回 true。
 boolean isFlavorRemoteObjectType()
          如果指定的 DataFlavor 表示远程对象,则返回 true。
 boolean isFlavorSerializedObjectType()
          如果指定的 DataFlavor 表示序列化对象,则返回 true。
 boolean isFlavorTextType()
          返回此 DataFlavor 是否是 Java 平台此实现的有效文本 flavor。
 boolean isMimeTypeEqual(DataFlavor dataFlavor)
          比较两个 DataFlavor 对象的 mimeType
 boolean isMimeTypeEqual(String mimeType)
          返回传入的 MIME 类型的字符串表示形式是否等于此 DataFlavor 的 MIME 类型。
 boolean isMimeTypeSerializedObject()
          DataFlavor 是否表示序列化对象?
 boolean isRepresentationClassByteBuffer()
          返回此 DataFlavor 的表示形式类是 java.nio.ByteBuffer 还是其子类。
 boolean isRepresentationClassCharBuffer()
          返回此 DataFlavor 的表示形式类是 java.nio.CharBuffer 还是其子类。
 boolean isRepresentationClassInputStream()
          DataFlavor 是否表示 java.io.InputStream
 boolean isRepresentationClassReader()
          返回此 DataFlavor 的表示形式类是 java.io.Reader 还是其子类。
 boolean isRepresentationClassRemote()
          如果表示形式类为 Remote,则返回 true。
 boolean isRepresentationClassSerializable()
          如果表示形式类可序列化,则返回 true。
 boolean match(DataFlavor that)
          测试 DataFlavor 与此 DataFlavor 的相等性。
protected  String normalizeMimeType(String mimeType)
          已过时。  
protected  String normalizeMimeTypeParameter(String parameterName, String parameterValue)
          已过时。  
 void readExternal(ObjectInput is)
          根据 Serialized 状态还原此 DataFlavor
static DataFlavor selectBestTextFlavor(DataFlavor[] availableFlavors)
          从 DataFlavor 数组中选择最佳文本 DataFlavor
 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
DataFlavor 表示 Java Unicode String 类,其中:
     representationClass = java.lang.String
     mimeType           = "application/x-java-serialized-object"        
 


imageFlavor

public static final DataFlavor imageFlavor
DataFlavor 表示 Java Image 类,其中:
     representationClass = java.awt.Image
     mimeType            = "image/x-java-image"
 


plainTextFlavor

@Deprecated
public static final DataFlavor plainTextFlavor
已过时。 从 1.3 开始。使用 DataFlavor.getReaderForText(Transferable) 代替 Transferable.getTransferData(DataFlavor.plainTextFlavor)
DataFlavor 表示使用 Unicode 编码的纯文本,其中:
     representationClass = InputStream
     mimeType            = "text/plain; charset=unicode"
 
DataFlavor过时,因为 (1) 其表示形式为 InputStream,一个基于 8 位的表示形式,而 Unicode 是一个 16 位的字符集;(2) charset "unicode" 意义不明确。"unicode" 意味着特定平台的 Unicode 实现,而不是跨平台的实现。


javaSerializedObjectMimeType

public static final String javaSerializedObjectMimeType
MIME Content 类型的 application/x-java-serialized-object 表示已变得持久的 Java 对象的图形。与此 DataFlavor 关联的表示形式类可以标识对象的 Java 类型,这里的对象指调用 java.awt.datatransfer.getTransferData 时作为引用返回的对象。

另请参见:
常量字段值

javaFileListFlavor

public static final DataFlavor javaFileListFlavor
要将文件列表传入 Java(及底层平台)或从中传出,需要使用此类型/子类型的 DataFlavorjava.util.List 的表示形式类。要求/保证列表的每个元素都是 java.io.File 类型。


javaJVMLocalObjectMimeType

public static final String javaJVMLocalObjectMimeType
要将一个引用传输到不具有关联 MIME Content 类型的任意 Java 对象引用(跨越同一 JVM 中的 Transferable 接口),需要使用具有此类型/子类型的 DataFlavor,其中 representationClass 等于跨越 Transferable 传递的类/接口的类型。

对于具有此 MIME Content 类型的 DataFlavor,从 Transferable.getTransferData 返回的对象引用必须是 DataFlavor 的表示形式类的实例。

另请参见:
常量字段值

javaRemoteObjectMimeType

public static final String javaRemoteObjectMimeType
为了通过拖放 ACTION_LINK 操作将活动链接传递到 Remote 对象,应该使用 Mime Content 类型的 application/x-java-remote-object,其中 DataFlavor 的表示形式类表示要传输的 Remote 接口的类型。

另请参见:
常量字段值
构造方法详细信息

DataFlavor

public DataFlavor()
构造一个新的 DataFlavor。提供此构造方法的目的只是为了支持 Externalizable 接口。它不用于公共(客户端)用途。

从以下版本开始:
1.2

DataFlavor

public DataFlavor(Class<?> representationClass,
                  String humanPresentableName)
构造一个表示 Java 类的 DataFlavor

返回的 DataFlavor 将具有以下特征:

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

参数:
representationClass - 用于在此 flavor 中传输数据的类
humanPresentableName - 用于标识此 flavor 的可读字符串;如果此参数为 null,则使用 MIME Content 类型的值
抛出:
NullPointerException - 如果 representationClass 为 null

DataFlavor

public DataFlavor(String mimeType,
                  String humanPresentableName)
构造一个表示 MimeTypeDataFlavor

返回的 DataFlavor 将具有以下特征:

如果 mimeType 为 "application/x-java-serialized-object; class=<representation class>",则结果与调用 new DataFlavor(Class:forName(<representation class>) 相同。

否则:

     representationClass = InputStream
     mimeType            = mimeType         
 

参数:
mimeType - 用于标识此 flavor 的 MIME 类型的字符串;如果 mimeType 没有指定 "class=" 参数,或者没有成功地加载类,则抛出 IllegalArgumentException
humanPresentableName - 用于标识此 flavor 的可读字符串;如果此参数为 null,则使用 MIME Content 类型的值
抛出:
IllegalArgumentException - 如果 mimeType 无效或者没有成功加载类
NullPointerException - 如果 mimeType 为 null

DataFlavor

public DataFlavor(String mimeType,
                  String humanPresentableName,
                  ClassLoader classLoader)
           throws ClassNotFoundException
构造一个表示 MimeTypeDataFlavor

返回的 DataFlavor 将具有以下特征:

如果 mimeType 为 "application/x-java-serialized-object; class=<representation class>",则结果与调用 new DataFlavor(Class:forName(<representation class>) 相同。

否则:

     representationClass = InputStream
     mimeType            = mimeType         
 

参数:
mimeType - 用于标识此 flavor 的 MIME 类型的字符串
humanPresentableName - 用于标识此 flavor 的可读字符串
classLoader - 要使用的类加载器
抛出:
ClassNotFoundException - 如果没有加载类
IllegalArgumentException - 如果 mimeType 无效
NullPointerException - 如果 mimeType 为 null

DataFlavor

public DataFlavor(String mimeType)
           throws ClassNotFoundException
根据 mimeType 字符串构造 DataFlavor。该字符串可以指定 "class=" 参数,以创建具有所需表示形式类的 DataFlavor。如果字符串不包含 "class=" 参数,则使用 java.io.InputStream 作为默认值。

参数:
mimeType - 用于标识此 flavor 的 MIME 类型的字符串;如果没有成功加载 "class=" 参数指定的类,则抛出 ClassNotFoundException
抛出:
ClassNotFoundException - 如果没有加载类
IllegalArgumentException - 如果 mimeType 无效
NullPointerException - 如果 mimeType 为 null
方法详细信息

tryToLoadClass

protected static final Class<?> tryToLoadClass(String className,
                                               ClassLoader fallback)
                                        throws ClassNotFoundException
试图从以下位置加载类:引导加载器、系统加载器、上下文加载器(如果存在)和指定的最终加载器。

参数:
className - 要加载的类的名称
fallback - 回退加载器
返回:
加载的类
抛出:
ClassNotFoundException - 如果未找到类

toString

public String toString()
DataFlavor 及其参数的字符串表示形式。得到的 String 包含 DataFlavor 类的名称、此 flavor 的 MIME 类型及其表示形式类。如果此 flavor 具有 "text" 的基本 MIME 类型、支持 charset 参数并且具有编码的表示形式,则还包括 flavor 的 charset。有关支持 charset 参数的文本 flavor 列表,请参阅 selectBestTextFlavor

覆盖:
Object 中的 toString
返回:
DataFlavor 的字符串表示形式
另请参见:
selectBestTextFlavor(java.awt.datatransfer.DataFlavor[])

getTextPlainUnicodeFlavor

public static final DataFlavor getTextPlainUnicodeFlavor()
返回表示具有 Unicode 编码的纯文本的 DataFlavor,其中:
     representationClass = java.io.InputStream
     mimeType            = "text/plain;
                            charset=<platform default Unicode encoding>"
 
Sun 的 Microsoft Windows 实现使用编码 utf-16le。Sun 的 Solaris 和 Linux 实现使用编码 iso-10646-ucs-2

返回:
表示具有 Unicode 编码的纯文本的 DataFlavor
从以下版本开始:
1.3

selectBestTextFlavor

public static final DataFlavor selectBestTextFlavor(DataFlavor[] availableFlavors)
DataFlavor 数组中选择最佳文本 DataFlavor。只能选择 DataFlavor.stringFlavor、等效 flavor 和具有基本 MIME "text" 类型的 flavor。

首先 Flavor 按照其 MIME 类型排序,顺序如下所示:

例如,在 "text/html" 上选择 "text/sgml",在 DataFlavor.plainTextFlavor 上选择 DataFlavor.stringFlavor

如果两个或更多 flavor 共享数组中的最佳 MIME 类型,则需要检查 MIME 类型以查看它是否支持 charset 参数。

以下 MIME 类型支持(或被视为支持)charset 参数:

以下 MIME 类型不支持(或被视为不支持)charset 参数: 对于 "text/<other>" MIME 类型,首先 JRE 需要确定 MIME 类型是否支持 charset 参数,它将检查该参数是否显式列入任意选择的使用该 MIME 类型的 DataFlavor 中。如果是这样,则 JRE 将假定从该点开始,MIME 类型支持 charset 参数,并且不再进行检查。如果没有显式列入该参数,则 JRE 将假定从该点开始,MIME 类型不支持 charset 参数,并且不再进行检查。因为此检查是在任意选择的 DataFlavor 上执行的,所以如果 MIME 类型支持 charset 参数,开发人员就必须确保所有具有该 "text/<other>" MIME 类型的 DataFlavor 指定了该参数。开发人员不应该依赖 JRE 用平台的默认 charset 来替代 "text/<other>" DataFlavor。不遵守此限制将导致不确定的行为。

如果数组中的最佳 MIME 类型不支持 charset 参数,则共享 MIME 类型的 flavor 按照其表示形式类排序,顺序如下所示:java.io.InputStreamjava.nio.ByteBuffer[B、<其他>。

如果两个或多个 flavor 共享最佳表示形式类,或者任何 flavor 都不具有三个指定的表示形式中的一个,则随意地选择这些 flavor 中的一个。

如果数组中的最佳 MIME 类型支持 charset 参数,则共享 MIME 类型的 flavor 按照其表示形式类排序,顺序如下所示:java.io.Readerjava.lang.Stringjava.nio.CharBuffer[C、<其他>。

如果两个或多个 flavor 共享最佳表示形式类,并且该表示形式是明确列出的四个表示形式中的一个,则非随意地选择这些 flavor 中的一个。但是,如果任何 flavor 都不是四个指定的表示形式中的一个,则通过其 charset 对 flavor 排序。Unicode charset,如 "UTF-16"、"UTF-8"、"UTF-16BE"、"UTF-16LE" 及其别名被认为是最佳的。其次选择平台默认的 charset 及其别名。"US-ASCII" 及其别名最差。所有其他 charset 都是按字母顺序选择的,但是只考虑 Java 平台的此实现所支持的 charset。

如果两个或更多 flavor 共享最佳 charset,则 flavor 再次按照其表示形式类排序,顺序如下所示:java.io.InputStreamjava.nio.ByteBuffer[B、<其他>。

如果两个或多个 flavor 共享最佳表示形式类,或者任何 flavor 都不具有三个指定的表示形式中的一个,则非随意地选择这些 flavor 中的一个。

参数:
availableFlavors - 可用 DataFlavor 的数组
返回:
按照以上指定规则的最佳(最高保真度)flavor;如果 availableFlavorsnull、长度为零或包含非文本 flavor,则返回 null
从以下版本开始:
1.3

getReaderForText

public Reader getReaderForText(Transferable transferable)
                        throws UnsupportedFlavorException,
                               IOException
获取文本 flavor 的 Reader,如果需要,则为期望的 charset(编码的)解码。受支持的表示形式类有:java.io.Readerjava.lang.Stringjava.nio.CharBuffer[Cjava.io.InputStreamjava.nio.ByteBuffer[B

因为不支持 charset 参数的文本 flavor 是以非标准格式编码的,所以应为这种 flavor 调用此方法。但是,为了维护向后兼容性,如果为这样的 flavor 调用了此方法,那么此方法会将该 flavor 视为支持 charset 参数,并相应地尝试为其解码。有关不支持 charset 参数的文本 flavor 列表,请参阅 selectBestTextFlavor

参数:
transferable - 将在此 flavor 中请求其数据的 Transferable
返回:
要读取 Transferable 数据的 Reader
抛出:
IllegalArgumentException - 如果表示形式类不是上文列出的七种之一
IllegalArgumentException - 如果 Transferable 包含 null 数据
NullPointerException - 如果 Transferablenull
UnsupportedEncodingException - 如果此 flavor 的表示形式为 java.io.InputStreamjava.nio.ByteBuffer[B,但 Java 平台的此实现不支持此 flavor 的编码
UnsupportedFlavorException - 如果 Transferable 不支持此 flavor
IOException - 如果因 I/O 错误而无法读取数据
从以下版本开始:
1.3
另请参见:
selectBestTextFlavor(java.awt.datatransfer.DataFlavor[])

getMimeType

public String getMimeType()
返回此 DataFlavor 的 MIME 类型字符串。

返回:
此 flavor 的 MIME 类型字符串

getRepresentationClass

public Class<?> getRepresentationClass()
返回请求此 DataFlavor 时,支持此 DataFlavor 的对象将返回的 Class

返回:
请求此 DataFlavor 时,支持此 DataFlavor 的对象将返回的 Class

getHumanPresentableName

public String getHumanPresentableName()
返回此 DataFlavor 表示的数据格式的得体的名称。此名称将由各个国家/地区来本地化。

返回:
DataFlavor 表示的数据格式的得体的名称

getPrimaryType

public String getPrimaryType()
返回此 DataFlavor 的基本 MIME 类型。

返回:
DataFlavor 的基本 MIME 类型

getSubType

public String getSubType()
返回此 DataFlavor 的子 MIME 类型。

返回:
DataFlavor 的子 MIME 类型

getParameter

public String getParameter(String paramName)
如果 paramName 等于 "humanPresentableName",则返回此 DataFlavor 的得体的名称。否则返回与 paramName 关联的 MIME 类型值。

参数:
paramName - 请求的参数名
返回:
name 参数的值;如果不存在关联值,则返回 null

setHumanPresentableName

public void setHumanPresentableName(String humanPresentableName)
设置此 DataFlavor 表示的数据格式的得体的名称。此名称将由各个国家/地区来本地化。

参数:
humanPresentableName - 新的得体的名称

equals

public boolean equals(Object o)
测试任意 Object 与此 DataFlavor 的相等性。当且仅当两个 DataFlavor 的 MIME 基本类型、子类型和表示形式类都相等时,才认为它们是相等的。此外,如果基本类型为 "text",子类型表示支持 charset 参数的文本 flavor,而表示形式类不是 java.io.Readerjava.lang.Stringjava.nio.CharBuffer[C,则 charset 参数也一定要相等。如果没有为一个或两个 DataFlavor 显式指定 charset,则假定使用平台默认的编码。有关支持 charset 参数的文本 flavor 列表,请参阅 selectBestTextFlavor

覆盖:
Object 中的 equals
参数:
o - 要与 this 相比较的 Object
返回:
如果 that 等于此 DataFlavor,则返回 true;否则返回 false
另请参见:
selectBestTextFlavor(java.awt.datatransfer.DataFlavor[])

equals

public boolean equals(DataFlavor that)
测试 DataFlavor 与此 DataFlavor 的相等性。当且仅当两个 DataFlavor 的 MIME 基本类型、子类型和表示形式类都相等时,才认为它们是相等的。此外,如果基本类型为 "text",子类型表示支持 charset 参数的文本 flavor,而表示形式类不是 java.io.Readerjava.lang.Stringjava.nio.CharBuffer[C,则 charset 参数也一定要相等。如果没有为一个或两个 DataFlavor 显式指定 charset,则假定使用平台默认的编码。有关支持 charset 参数的文本 flavor 的列表,请参阅 selectBestTextFlavor

参数:
that - 要与 this 相比较的 DataFlavor
返回:
如果 that 等于此 DataFlavor,则返回 true;否则返回 false
另请参见:
selectBestTextFlavor(java.awt.datatransfer.DataFlavor[])

equals

@Deprecated
public boolean equals(String s)
已过时。 hashCode() 协定不一致,使用 isMimeTypeEqual(String) 代替。

只比较 mimeType 与传入的 String,在比较中不考虑 representationClass。如果需要比较 representationClass,则可以使用 equals(new DataFlavor(s))

返回:
如果 String (MimeType) 相等,则返回 true。

hashCode

public int hashCode()
返回此 DataFlavor 的哈希码。对于两个相等的 DataFlavor,其哈希码也相等。对于与 DataFlavor.equals(String) 匹配的 String,不保证 DataFlavor 的哈希码等于 String 的哈希码。

覆盖:
Object 中的 hashCode
返回:
DataFlavor 的哈希码
另请参见:
Object.equals(java.lang.Object), Hashtable

match

public boolean match(DataFlavor that)
测试 DataFlavor 与此 DataFlavor 的相等性。当且仅当两个 DataFlavor 的 MIME 基本类型、子类型和表示形式类都相等时,才认为它们是相等的。此外,如果基本类型为 "text",子类型表示支持 charset 参数的文本 flavor,而表示形式类不是 java.io.Readerjava.lang.Stringjava.nio.CharBuffer[C,则 charset 参数也一定要相等。如果没有为一个或两个 DataFlavor 显式指定 charset,则假定使用平台默认的编码。有关支持 charset 参数的文本 flavor 的列表,请参阅 selectBestTextFlavor

参数:
that - 要与 this 相比较的 DataFlavor
返回:
如果 that 等于此 DataFlavor,则返回 true;否则返回 false
从以下版本开始:
1.3
另请参见:
selectBestTextFlavor(java.awt.datatransfer.DataFlavor[])

isMimeTypeEqual

public boolean isMimeTypeEqual(String mimeType)
返回传入的 MIME 类型的字符串表示形式是否等于此 DataFlavor 的 MIME 类型。比较中不包括参数。

参数:
mimeType - MIME 类型的字符串表示形式
返回:
如果传入的 MIME 类型的字符串表示形式等于此 DataFlavor 的 MIME 类型,则返回 true;否则返回 false
抛出:
NullPointerException - 如果 mimeType 为 null

isMimeTypeEqual

public final boolean isMimeTypeEqual(DataFlavor dataFlavor)
比较两个 DataFlavor 对象的 mimeType。不考虑任何参数。

参数:
dataFlavor - 要比较的 DataFlavor
返回:
如果 MimeType 相等,则返回 true;否则返回 false

isMimeTypeSerializedObject

public boolean isMimeTypeSerializedObject()
DataFlavor 是否表示序列化对象?


getDefaultRepresentationClass

public final Class<?> getDefaultRepresentationClass()

getDefaultRepresentationClassAsString

public final String getDefaultRepresentationClassAsString()

isRepresentationClassInputStream

public boolean isRepresentationClassInputStream()
DataFlavor 是否表示 java.io.InputStream


isRepresentationClassReader

public boolean isRepresentationClassReader()
返回此 DataFlavor 的表示形式类是 java.io.Reader 还是其子类。

从以下版本开始:
1.4

isRepresentationClassCharBuffer

public boolean isRepresentationClassCharBuffer()
返回此 DataFlavor 的表示形式类是 java.nio.CharBuffer 还是其子类。

从以下版本开始:
1.4

isRepresentationClassByteBuffer

public boolean isRepresentationClassByteBuffer()
返回此 DataFlavor 的表示形式类是 java.nio.ByteBuffer 还是其子类。

从以下版本开始:
1.4

isRepresentationClassSerializable

public boolean isRepresentationClassSerializable()
如果表示形式类可序列化,则返回 true。

返回:
如果表示形式类可序列化,则返回 true。

isRepresentationClassRemote

public boolean isRepresentationClassRemote()
如果表示形式类为 Remote,则返回 true。

返回:
如果表示形式类为 Remote,则返回 true。

isFlavorSerializedObjectType

public boolean isFlavorSerializedObjectType()
如果指定的 DataFlavor 表示序列化对象,则返回 true。

返回:
如果指定的 DataFlavor 表示序列化对象,则返回 true。

isFlavorRemoteObjectType

public boolean isFlavorRemoteObjectType()
如果指定的 DataFlavor 表示远程对象,则返回 true。

返回:
如果指定的 DataFlavor 表示远程对象,则返回 true。

isFlavorJavaFileListType

public boolean isFlavorJavaFileListType()
如果指定的 DataFlavor 表示 File 对象列表,则返回 true。

返回:
如果指定的 DataFlavor 表示 File 对象列表,则返回 true。

isFlavorTextType

public boolean isFlavorTextType()
返回此 DataFlavor 是否是 Java 平台此实现的有效文本 flavor。只有等于 DataFlavor.stringFlavorDataFlavor,并且其基本 MIME 类型为 "text" 的 flavor 才是有效的文本 flavor。

如果此 flavor 支持 charset 参数,则它必须等于 DataFlavor.stringFlavor,或者其表示形式必须为 java.io.Readerjava.lang.Stringjava.nio.CharBuffer[Cjava.io.InputStreamjava.nio.ByteBuffer[B。如果表示形式为 java.io.InputStreamjava.nio.ByteBuffer[B,则此 flavor 的 charset 参数必须受 Java 平台此实现的支持。如果未指定 charset,则假定使用始终受支持的平台默认 charset。

如果此 flavor 不支持 charset 参数,则其表示形式必须为 java.io.InputStreamjava.nio.ByteBuffer[B

有关支持 charset 参数的文本 flavor 的列表,请参阅 selectBestTextFlavor

返回:
如果此 DataFlavor 为上述有效文本 flavor,则返回 true;否则返回 false
从以下版本开始:
1.4
另请参见:
selectBestTextFlavor(java.awt.datatransfer.DataFlavor[])

writeExternal

public void writeExternal(ObjectOutput os)
                   throws IOException
序列化此 DataFlavor

指定者:
接口 Externalizable 中的 writeExternal
参数:
os - 要写入对象的流
抛出:
IOException - 包含可能发生的所有 I/O 异常

readExternal

public void readExternal(ObjectInput is)
                  throws IOException,
                         ClassNotFoundException
根据 Serialized 状态还原此 DataFlavor

指定者:
接口 Externalizable 中的 readExternal
参数:
is - 为了恢复对象而从中读取数据的流
抛出:
IOException - 如果发生 I/O 错误
ClassNotFoundException - 如果无法找到需要恢复的某个对象的类。

clone

public Object clone()
             throws CloneNotSupportedException
返回此 DataFlavor 的副本。

覆盖:
Object 中的 clone
返回:
DataFlavor 的副本
抛出:
CloneNotSupportedException - 如果对象的类不支持 Cloneable 接口,则重写 clone 方法的子类也会抛出此异常,以指示无法复制某个实例。
另请参见:
Cloneable

normalizeMimeTypeParameter

@Deprecated
protected String normalizeMimeTypeParameter(String parameterName,
                                                       String parameterValue)
已过时。 

为每个 MIME 类型参数对 DataFlavor 调用此方法可以使 DataFlavor 的子类处理特定参数,如文本/纯文本 charset 参数,其值是区分大小写的。(假定 MIME 类型参数值区分大小写。)

为每个参数名/值对调用此方法,应该返回 parameterValue 的标准化表示形式。 从 1.1 版本开始,此实现不再调用此方法。


normalizeMimeType

@Deprecated
protected String normalizeMimeType(String mimeType)
已过时。 

为每个 MIME 类型字符串调用此方法可以使 DataFlavor 子类型有机会更改实现 MIME 类型标准化的方式。一种可能的使用情况是添加默认的参数/值对,以防传入的 MIME 类型字符串中参数/值对不存在的情况。 从 1.1 版本开始,此实现不再调用此方法。


JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策