使用数组类 : 数组 « 反射 « Java 教程

En
Java 教程
1. 语言基础
2. 数据类型
3. 操作符
4. 流程控制
5. 类定义
6. 开发相关
7. 反射
8. 正则表达式
9. 集合
10. 线
11. 文件
12. 泛型
13. 本土化
14. Swing
15. Swing事件
16. 二维图形
17. SWT
18. SWT 二维图形
19. 网络
20. 数据库
21. Hibernate
22. JPA
23. JSP
24. JSTL
25. Servlet
26. Web服务SOA
27. EJB3
28. Spring
29. PDF
30. 电子邮件
31. 基于J2ME
32. J2EE应用
33. XML
34. 设计模式
35. 日志
36. 安全
37. Apache工具
38. 蚂蚁编译
39. JUnit单元测试
Java
Java 教程 » 反射 » 数组 
7. 9. 2. 使用数组类
/*
 *     file: ArrayDemo.java
 *  package: oreilly.hcj.reflection
 *
 * This software is granted under the terms of the Common Public License,
 * CPL, which may be found at the following URL:
 * http://www-124.ibm.com/developerworks/oss/CPLv1.0.htm
 *
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.
 * All Rights are Reserved by the various authors.
 *
########## DO NOT EDIT ABOVE THIS LINE ########## */


import java.lang.reflect.Array;

/**  
 * Demonstrates the use of the Array class.
 *
 @author <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>
 @version $Revision$
 */
public class ArrayDemo {
  /** 
   * Copy an array and return the copy.
   *
   @param input The array to copy.
   *
   @return The coppied array.
   *
   @throws IllegalArgumentException If input is not an array.
   */
  public static Object copyArray(final Object input) {
    final Class type = input.getClass();
    if (!type.isArray()) {
      throw new IllegalArgumentException();
    }
    final int length = Array.getLength(input);
    final Class componentType = type.getComponentType();

    final Object result = Array.newInstance(componentType, length);
    for (int idx = 0; idx < length; idx++) {
      Array.set(result, idx, Array.get(input, idx));
    }
    return result;
  }

  /** 
   * Run the demo.
   *
   @param args Command line arguments (ignored).
   */
  public static void main(final String[] args) {
    try {
      int[] x = new int[] { 2387};
      char[] y = new char[] { 'a''z''e' };
      String[] z = new String[] { "Jim""John""Joe" };

      System.out.println(" -- x and y --");
      outputArrays(x, y);

      System.out.println(" -- x and copy of x --");
      outputArrays(x, copyArray(x));

      System.out.println(" -- y and copy of y --");
      outputArrays(y, copyArray(y));

      System.out.println(" -- z and copy of z --");
      outputArrays(z, copyArray(z));
    catch (final Exception ex) {
      ex.printStackTrace();
    }
  }

  /** 
   * Print out 2 arrays in columnar format.
   *
   @param first The array for the first column.
   @param second The array for the second column.
   *
   @throws IllegalArgumentException __UNDOCUMENTED__
   */
  public static void outputArrays(final Object first, final Object second) {
    if (!first.getClass()
              .isArray()) {
      throw new IllegalArgumentException("first is not an array.");
    }
    if (!second.getClass()
               .isArray()) {
      throw new IllegalArgumentException("second is not an array.");
    }

    final int lengthFirst = Array.getLength(first);
    final int lengthSecond = Array.getLength(second);
    final int length = Math.max(lengthFirst, lengthSecond);

    for (int idx = 0; idx < length; idx++) {
      System.out.print("[" + idx + "]\t");
      if (idx < lengthFirst) {
        System.out.print(Array.get(first, idx"\t\t");
      else {
        System.out.print("\t\t");
      }
      if (idx < lengthSecond) {
        System.out.print(Array.get(second, idx"\t");
      }
      System.out.println();
    }
  }
}

/* ########## End of File ########## */
7. 9. 数组
7. 9. 1. 确定对象数组
7. 9. 2. 使用数组类
7. 9. 3. 创建数组Array.newInstance
7. 9. 4. Is field an array
7. 9. 5. 创建整数数组与Array.newInstance
7. 9. 6. 使用Array.setInt ,以填充一个数组
7. 9. 7. 使用Array.setShort和Array.setLong
7. 9. 8. 数组对象的维度
7. 9. 9. 获取组件类型数组对象
7. 9. 10. 数组反思和二维数组
7. 9. 11. 类的名称和浮点数组
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.