Writable.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.io;
  19. import java.io.DataOutput;
  20. import java.io.DataInput;
  21. import java.io.IOException;
  22. /**
  23.  * A serializable object which implements a simple, efficient, serialization 
  24.  * protocol, based on {@link DataInput} and {@link DataOutput}.
  25.  *
  26.  * <p>Any <code>key</code> or <code>value</code> type in the Hadoop Map-Reduce
  27.  * framework implements this interface.</p>
  28.  * 
  29.  * <p>Implementations typically implement a static <code>read(DataInput)</code>
  30.  * method which constructs a new instance, calls {@link #readFields(DataInput)} 
  31.  * and returns the instance.</p>
  32.  * 
  33.  * <p>Example:</p>
  34.  * <p><blockquote><pre>
  35.  *     public class MyWritable implements Writable {
  36.  *       // Some data     
  37.  *       private int counter;
  38.  *       private long timestamp;
  39.  *       
  40.  *       public void write(DataOutput out) throws IOException {
  41.  *         out.writeInt(counter);
  42.  *         out.writeLong(timestamp);
  43.  *       }
  44.  *       
  45.  *       public void readFields(DataInput in) throws IOException {
  46.  *         counter = in.readInt();
  47.  *         timestamp = in.readLong();
  48.  *       }
  49.  *       
  50.  *       public static MyWritable read(DataInput in) throws IOException {
  51.  *         MyWritable w = new MyWritable();
  52.  *         w.readFields(in);
  53.  *         return w;
  54.  *       }
  55.  *     }
  56.  * </pre></blockquote></p>
  57.  */
  58. public interface Writable {
  59.   /** 
  60.    * Serialize the fields of this object to <code>out</code>.
  61.    * 
  62.    * @param out <code>DataOuput</code> to serialize this object into.
  63.    * @throws IOException
  64.    */
  65.   void write(DataOutput out) throws IOException;
  66.   /** 
  67.    * Deserialize the fields of this object from <code>in</code>.  
  68.    * 
  69.    * <p>For efficiency, implementations should attempt to re-use storage in the 
  70.    * existing object where possible.</p>
  71.    * 
  72.    * @param in <code>DataInput</code> to deseriablize this object from.
  73.    * @throws IOException
  74.    */
  75.   void readFields(DataInput in) throws IOException;
  76. }