`

Java反射模拟数组动态扩展

    博客分类:
  • Java
阅读更多

  使用Java的反射,实现数组动态扩展的小方法。

package utils;

import java.lang.reflect.Array;

/**
 * 基于反射的
 * 扩展数组的通用工具类
 * @author ZhaoLijun
 * @version 1.0
 */
public class ExpandArray {

	public static Object spreadArraySizeByReflect(Object originalArr, int percentage) {
		
		Object newArr = null;
		// 获得传入对象的Class对象
		Class cl = originalArr.getClass();
		
		// 是数组则拷贝原数组内容到新数组,并扩展新数组存储空间;非数组对象返回null
		if(cl.isArray()) {
			// 确定数组对像的具体类型,如int、Integer、String等
			Class originalType = cl.getComponentType();
			// 获得数组原始长度,并计算新数组长度
			int oldSize = Array.getLength(originalArr);
			int newSize = (int) Math.ceil(oldSize*(100 + percentage)/100);
			newArr = Array.newInstance(originalType, newSize);
			System.arraycopy(originalArr, 0, newArr, 0, oldSize);
		}
		return newArr;
	}
	
	/**
	 * testing method
	 * @param args
	 */
	public static void main(String[] args) {
		String[] testArr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
		//int[] testArr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
		//Integer[] testArr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
		Object resultArr = spreadArraySizeByReflect(testArr, 10);
		for(int i=0; i<Array.getLength(resultArr); i++) {
			System.out.println(Array.get(resultArr, i));
		}
	}

}

 

分享到:
评论

相关推荐

    Java 反射详解

    在众多编程语言中,Java反射的灵活性和强大功能使其独树一帜,尤其是在Java Bean组件化、框架扩展性等方面发挥了关键作用。 #### 反射的基本概念与用途 ##### 反射的概念 反射机制允许程序在运行时获取类的信息,...

    关于Java的反射机制,你需要理解这些共5页.pdf.zi

    总之,Java反射机制是Java动态性的重要体现,它扩展了程序的灵活性,但也带来了潜在的安全隐患和性能问题。理解和熟练运用反射机制是Java开发者提升技能的重要一步。在实际开发中,应根据需求谨慎选择是否使用反射,...

    剑指offer第二版整理的java代码

    9. **反射**:在一些高级题目中,可能需要使用反射来动态获取类的信息或创建对象。 10. **JUC并发工具类**:如CountDownLatch、CyclicBarrier、Semaphore等,它们在多线程协作场景下能发挥重要作用。 通过对这些...

    java 30个基本概念

    19. **ArrayList**:ArrayList是Java集合框架的一部分,是一个动态数组,可以自动调整大小,便于存储和访问对象。 20. **Class类**:Class类代表运行时的类信息,通过对象的getClass()方法可以获得。Java的反射机制...

    java笔记 java笔记

    - **继承特点**:Java支持单一继承,但一个类可以通过实现多个接口来模拟多重继承。 - **父类与子类的关系**:子类继承父类的属性和方法,并可添加新的方法或覆盖已有的方法。 - **构造对象的顺序**:首先构造父类...

    JavaHome-master Java学习资料

    7. **反射机制**:Java反射允许在运行时检查类的信息,如构造器、方法、字段等,并动态调用。它是Java中一种强大的工具,但也需谨慎使用。 8. **Java Swing和JavaFX**:这两个是Java的图形用户界面(GUI)库,用于...

    JAVA中里10种常见库.zip

    Apache Commons Lang是一个实用工具库,提供了对Java语言的扩展,包括字符串处理、日期和时间操作、数组工具、反射辅助类等。它简化了许多常见的编程任务,使得开发更加高效。 2. **Guava**: Google的Guava库...

    java3D-api

    9. **扩展性(Extensibility)**:Java3D API设计灵活,允许开发者添加自定义的行为和渲染算法,满足特定的项目需求。 然而,值得注意的是,Java3D API自1.5.2版本后更新较少,社区支持也不如一些现代的3D库如...

    Core Java Java的基本知识

    面向对象编程是 Java 的核心之一,它强调的是将现实世界中的事物抽象成对象,并通过这些对象来模拟真实世界的运作。 ##### 1. 类与对象 - 类是对象的模板或蓝图。 - 对象是类的具体实例。 ##### 2. 继承 - 继承是...

    java案例开发集锦

    9. **反射API**:Java反射机制允许程序在运行时动态访问类和对象的信息,包括类名、方法名、构造器等,为动态编程提供了可能性。 10. **Java注解(Annotation)**:注解是元数据的一种形式,可以用于编译时或运行时...

    使用Java理解程序逻辑PPT

    这两个特性极大地扩展了Java的灵活性和可扩展性。 以上知识点构成了北大青岛ACCP教学课件的主要内容。通过学习和实践这些PPT中的示例,学习者可以逐步建立起坚实的Java基础,并培养出强大的程序逻辑思维能力。对于...

    Java程序员面试笔试宝典

    首先,书中必然深入讲解Java语言的基础知识,包括但不限于变量、数据类型、运算符、流程控制(如if-else、switch-case、循环)、函数、数组以及面向对象的基本概念(如封装、继承、多态)。这些是任何Java程序员必须...

    head first java 中文版

    3. **基本语法**:书中涵盖Java的基础语法,如变量、数据类型、运算符、流程控制(条件语句和循环)、数组等。这些内容是编程的基础,为后续的复杂概念打下坚实基础。 4. **类与对象**:详细解释了类的构造函数、...

    java全集.pdf JAVA全集

    - **Java继承特点**:Java不支持多重继承,但可以通过实现多个接口来模拟多重继承的效果。 - **父类(SuperClass)和子类(SubClass)的关系**:子类继承父类的属性和方法,并可以扩展或重写它们。 **7.3 多态...

    Java高级语法合集.docx

    3. **ArrayList集合**:ArrayList是Java中的动态数组,属于List接口的一个实现。它提供了快速的随机访问,但插入和删除元素时性能相对较慢。ArrayList的常用方法包括添加、删除、查找、替换等,同时支持对基本类型和...

    Thinking in Java 中文第四版+习题答案

    2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...

    Java笔试题大集合及答案(另附各大公司笔试题)

    8. **反射与注解**:理解反射的概念,能动态创建对象、调用方法、访问字段。注解是元数据的一种,理解其工作原理和在代码中的应用。 9. **网络编程**:了解TCP/IP协议,理解Socket编程,包括服务器端与客户端的建立...

    java 编程入门思考

    2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...

    java3d 迷宫游戏

    Java3D是Java的一个扩展库,专门用于在Java应用程序中构建和显示复杂的3D图形。下面我们将深入探讨Java3D的基本概念、迷宫游戏开发的关键技术和实现步骤。 **Java3D基本概念** 1. **Java3D架构**:Java3D基于OpenGL...

    JAVA期末考试重点代码段整合

    4. **数组与数组列表**:熟悉数组的创建、初始化,以及数组列表的动态扩展和操作,如ArrayList的增删改查方法。 5. **字符串操作**:String类的不可变性,以及StringBuilder和StringBuffer的使用,字符串比较和字符...

Global site tag (gtag.js) - Google Analytics