`
xiaoxiong_it
  • 浏览: 129973 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JAVA方法的多变参数

    博客分类:
  • JAVA
 
阅读更多

Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。

注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。

可变参数的特点:

(1)、只能出现在参数列表的最后; 

(2)、...位于变量类型和变量名之间,前后有无空格都可以;

(3)、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。

 

public static void dealArray(int... intArray) {
		for(int i: intArray) {
			System.out.println(i + " ");
		}
	}

public static void main(String[] args) {
		dealArray();
		dealArray(1);
		dealArray(1,2);
		int[] intArray = {1,2,3};
		dealArray(intArray);
	}

 通过main方法里的调用,可以看出来这个可变参数既可以是没有参数(空参数),也可以是不定长的。看到这里估计都能明白,这个不定长的参数其实和数组参数挺像的。事实上,也确实是这么回事儿。编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。

 

 

dealArray(); //dealArray(int[] intArray{});  
dealArray(1); //dealArray(int[] intArray{1});  
dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3});

  

 

 

可变参数和固定参数方法的优先级:

 

public static void a(int i, int j) {
		System.out.println("此方法是固定参数。");
	}
	
	public static void a(int ... intArray) {
		System.out.println("此方法是可变参数。");
	}

 

 

输出:

 

public static void main(String[] args) {
		a(1,2);
	}

 

 

结果:

 

此方法是固定参数。

 

 

能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的。

 

在项目中看到别人使用,所以去网上查了相关资料。

文章信息摘自网络,仅供参考。

项目中使用如下:

 

 

//把方法的参数封装成键值对的MAP类型。
public static Map getMaps(Object ... s){
		Map map = new HashMap();
		for(int i=0;i+1<s.length;i+=2){
			map.put(s[i], s[i+1]);
		}
		return map;
	}

 

 

方法的调用:

Map map = ProfileOptionValueLocalServiceUtil.getMaps("companyId",line.getCompanyId()
							,"departmentId",line.getDepartmentId()
							,"budgetYear",order.getBudgetYear()
							,"budgetType",order.getBudgetTypeLookupCode(),"companyNature",order.getCompanyNatureLookupCode()
							,"profileOptionValue","N");

 

分享到:
评论

相关推荐

    JAVA入门自学经典

    JAVA具有简单、多变、面向对象、不依赖操作系统的特点,因此它具有很好的移植性和安全性。在JAVA的学习过程中,搭建Java开发环境是基础,其中包括下载、安装和配置JDK。 JDK,即Java Development Kit,是Java的系统...

    Mybatis多参数查询与列表查询不同方式实现

    在Mybatis这个强大的持久层框架中,多参数查询与列表查询是常见的操作,尤其是在处理复杂的业务逻辑时。本文将深入探讨Mybatis如何实现这两种查询...在实际项目中,可以结合使用这些方法,以应对复杂多变的查询场景。

    21天学通JAVA(高清版)

    Java语言是一种面向对象的编程语言,其主要特点包括简单性、多变性、面向对象和不依赖操作系统等。这些特点使得Java具有良好的移植性和安全性,在网络编程方面得到了广泛应用。Java平台根据用途的不同,分为三个版本...

    利用java反射创建通用的数据库查询方法.pdf

    这种方法在处理大量数据库交互且数据模型多变的项目中尤其有用,提高了代码的可重用性和灵活性。但需要注意的是,过度使用反射可能会降低代码的可读性,并且由于其运行时特性,可能会影响性能。在实际应用中,应权衡...

    用java代码生成静态页面

    这种方法不仅适用于简单的文本内容生成,还可以扩展到复杂的HTML结构,甚至可以结合模板引擎如Thymeleaf或Freemarker来生成更加复杂多变的页面内容。这对于构建高效、灵活的Web应用具有重要意义。

    Jill——Java编写的Lua脚本引擎

    2. **配置和动态更新**:Lua脚本可以作为配置文件,动态改变游戏参数或系统设置,无需重新编译Java代码。 3. **热修复和扩展**:如果游戏中发现bug,可以通过更新Lua脚本来快速修复,而不用发布新版本。 4. **用户...

    java学习心得

    - **可重用对象**:更加灵活多变的重用机制,支持不同场景下的代码复用。 - **多态性**:类型相关的通用操作,使得同一方法可以应用于多种类型的对象上,增强了代码的灵活性和通用性。 - **自动化维护**:通过工具和...

    PageHelper分页插件Java

    PageHelper是Java开发中一款非常流行的分页插件,它主要应用于MyBatis框架,能够极大地简化数据库查询的分页操作。在Web应用中,尤其是数据量较大的情况下,分页功能是必不可少的,PageHelper提供了高效且灵活的解决...

    JAVA并发编程实践-中文-高清-带书签-完整版

    通过合理配置线程池参数,可以有效控制并发数量,提高系统性能并防止资源耗尽。 Java并发集合框架也是书中的一大重点,包括`ConcurrentHashMap`、`CopyOnWriteArrayList`、`ConcurrentLinkedQueue`等,这些集合类在...

    基于Java的CAD资源共享和标准件参数化系统的设计与实现.pdf

    为解决这一问题,研究者们提出了基于Java的CAD资源共享和标准件参数化系统的设计与实现。 这一系统利用Java语言进行开发,Java的跨平台特性使其可以部署在不同的操作系统上,便于企业内部不同部门间的资源共享和...

    车联网平台Java源码,带数据库。

    首先,Java作为后台开发的主要语言,具有跨平台、面向对象和丰富的库支持等优点,非常适合构建这种复杂且需求多变的车联网系统。在这个项目中,Java源码可能包含了车辆数据处理、用户管理、设备通信、数据分析等功能...

    一次获得界面所有实体类的数据

    接下来的关键步骤是根据参数名找到对应的setter方法并调用之,这里利用了Java反射API中的`Method`类和`invoke`方法。 4. **类型转换**: 由于HTTP请求参数通常都是字符串格式,因此需要进行类型转换才能正确地填充...

    使用Java理解程序逻辑第3章.zip

    函数,或称方法,在Java中是代码重用和模块化设计的关键。通过定义函数,我们可以将一组相关的操作封装起来,然后在需要的地方调用。函数可以接受参数,返回结果,甚至能处理异常。理解函数的声明、定义和调用,以及...

    21天学通java 高清版pdf

    Java是一种广泛应用于网络编程领域的高级编程语言,其特点包括简单、多变、面向对象,且不依赖特定操作系统,具有良好的移植性和安全性。Java平台可依其用途分为三个版本:Java标准版(JavaSE),主要用于桌面级应用...

    Java多态(动力节点Java学院整理)_.docx

    - **方法重载**:在同一个类中,可以有多个同名但参数列表不同的方法,这是多态的一种特殊形式,也称为方法的静态绑定(编译时确定)。 6. **多态与动态绑定**:在Java中,多态的实现依赖于动态绑定机制。这意味着...

    使用Java理解程序逻辑第2章.zip

    理解方法的定义、调用,参数传递以及返回值的概念,对于编写可复用的代码至关重要。 4. **数组**:数组是Java中存储同类型元素集合的数据结构。了解如何声明、初始化和操作数组,以及一维和二维数组的区别,能帮助...

    超轻量压缩传输js2java rpc框架(XtZPStream v1.0)

    - **概述:** 支持将复杂的JavaScript Object对象作为调用参数传递,并能在Java端转换为对应的Map对象。 - **技术细节:** 这一特性意味着开发者可以在客户端构建复杂的JSON数据结构,并直接将其发送到服务器端,...

Global site tag (gtag.js) - Google Analytics