`
qdpurple
  • 浏览: 276149 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于 method (Object ... params )

阅读更多

看公司的平台代码,看到这样一个方法

public DataSet query(String sql, Object... para){
//opreation
}

  Object... param 第一次看到这样的用法,难道这是公司自定义的数据类型? 在群里问了句谁知道?

一个新人过来,给我做了个事例,说这是java的新特性== 变长数组。

直接让我汗颜,自认为对java基础有较高掌握,但却没见过这样。。。

 

学习:

class  Hello{

	public static void generalUse(int []args){
		for (int i = 0;i < args.length ; i++ ){
				System.out.println(args[i]);
		}
	}

	public static void newBehaviour(int... args){
		for (int i = 0;i < args.length ; i++ ){
				System.out.println(args[i]);
		}
	}
	
	public static void main(String[] args) {
		//int[] a = {};
		//test1 
		generalUse();	//不能通过编译,
		newBehaviour();

	}
}

 

 

 通过测试看到,当参数为(int... arg) 与传统的(int [] args) 在调用时,但不传入参数时,

传统的使用将不能通过编译:

 

Hello.java:18: 无法将 Hello 中的 generalUse(int[]) 应用于 ()
                generalUse();
                ^
1 错误

 

 

而新特性,并不报错。

这样的使用是java的使用更加灵活。

分享到:
评论
32 楼 fuchao01 2011-04-21  
这个两年前就有了
31 楼 qdpurple 2011-04-19  
对不住大家了 慨叹才识浅薄 ,被评为新手帖了  ,重新学习回帖版规 .
谢谢大家的批评 我会努力堆牢基础的
30 楼 ce2010 2011-04-19  
用了好久了,竟然没有发现这个新特性,真是失败啊。。学习学习。。
29 楼 洪帮主 2011-04-19  
明显的坑爹嘛。
28 楼 aoliwen521 2011-04-19  
坑爹啊。。我还兴冲冲的进来看啥新特性。。。弄死我吧。。。
27 楼 supperbbq 2011-04-19  
我还以为是java 1.7新特性才进来看的...
26 楼 blackartanan 2011-04-19  
这个特性不错,有时的确省去不少麻烦
25 楼 bastengao 2011-04-19  
jdk1.7快出来了,jdk1.5的“新”特性才让你发现。
24 楼 ak121077313 2011-04-19  
变参 我非常喜欢
23 楼 Javac_MyLife 2011-04-19  
用到的机会不是很多,偶尔。
22 楼 ak121077313 2011-04-19  
这算哪门子新特性
21 楼 wangzaixiang 2011-04-19  
zhengjie_dna 写道
说真的这特性真的没啥用


变参算是Java5中少数有些价值的特性了。相比起那些泛型来说。
20 楼 分离的北极熊 2011-04-19  
估计LZ学生刚学,要不就培训生~~~~~~~工作可能性不大
19 楼 sunxiaofeng1011 2011-04-19  
汗,我以为介绍Java 7呢.不过还好,很多人可能没用过,可以了解一下。
18 楼 zhengjie_dna 2011-04-19  
说真的这特性真的没啥用
17 楼 comeonbabye 2011-04-19  
哈哈,多回顾一下基础。
16 楼 kakalun 2011-04-19  
楼主是不是在维护世纪之初的项目!?
15 楼 tcray 2011-04-19  
dolwenjian 写道
很明显 估计很多人都是了解有这么个东西,但是实际中 都没用过。。。


正解 其实jdk中你要是仔细看看就会发现有好多没用过的包(不是类,哈哈)
14 楼 neverforget 2011-04-19  
liubey 写道
悲催 我都不忍心说你了


+1

自兄在1.4出世时 兄台远去 如今归来 己是je1.6当道了
13 楼 wangzaixiang 2011-04-19  
BearRui 写道
这种特新,还是少用点好,调用这样的方法,JVM每次都会new1个object数组来保存方法中的参数,对性能有影响,


不知道作者是在编写如何高性能的程序,居然害怕这种调用方式导致的性能损失。
不知道作者还敢使用String类型吗?这玩意的性能特差,分配一个String,就要new出起码2个对象,而且还不能修改,每次都产生新的String和内部的char[]对象。

还是回到使用C语言的char *时代吧?不要使用java了。

相关推荐

    根据数据库表自动产生javabean

    Object [] params = new Object[t.length]; for(int j=0;j&lt;t.length;j++) { System.out.println(t[j]); params[j] = TypeFinder.convert(t[j], value); } mt.invoke(obj,params); } } return ...

    Spring Boot 整合 Redis.docx

    public Object generate(Object target, Method method, Object... params) { StringBuilder sb = new StringBuilder(); sb.append(target.getClass().getName()); sb.append(method.getName()); for (Object ...

    httpClient

    getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); String response = ""; /* 3 执行 HTTP GET 请求 */ try { int statusCode = httpClient....

    xml反射基本用法........

    method.invoke(instance, params);` 6. **处理字段**:同样,我们也可以获取和修改类的字段。`Field field = clazz.getField("fieldName"); field.set(instance, fieldValue);` 7. **异常处理**:在使用反射时,...

    Java反射机制实践

    - `Method method = clazz.getMethod("methodName", params...);`:获取public方法。 - `method = clazz.getDeclaredMethod("methodName", params...);`:获取任何可见性方法。 - `method.invoke(obj, args...);`...

    Mybatis学习- 拦截器-实现分页

    int pageSize = (int) params.get("pageSize"); // 修改SQL语句 String sqlId = mapperMethod.getSqlCommandId(); BoundSql boundSql = session.getConfiguration().getMappedStatement(sqlId).getBoundSql...

    java反射

    if (index &gt;= params.length || index ) { throw new RuntimeException("Index " + (index )); } if (!(params[index] instanceof Class)) { return Object.class; } return (Class) params[index]; } ``` ...

    spring_MVC源码

    07. public Object save(final Object model); 08. public void update(final Object model); 09. public void delete(final Object model); 10.} [java] view plaincopy 01.package com.mvc.dao; 02...

    DBUniversalOperation.zip

    通过Class类、Constructor类、Method类以及Field类等,我们可以动态地获取类的信息并执行相应的操作。 在描述中提到的`DBUtil`工具类,它的核心功能是提供通用的数据库操作接口,使得开发者无需为每一种CRUD...

    基于JAVA的每日宜忌查询api调用代码实例.docx

    params.put("key", APPKEY); ``` 对于POST请求,需要写入请求体。在本例中,由于请求参数已经包含在URL中(GET请求),所以POST请求的实现没有显示,但通常会涉及创建`DataOutputStream`,然后写入参数的URL编码...

    详解Spring Boot使用redis实现数据缓存

    // public Object generate(Object target, Method method, Object... params) { // // 示例代码,生成基于类名、方法名和参数的Key // } // }; // } // 配置Redis缓存管理器 @Bean public CacheManager ...

    java调用webservice接口.zip

    i &lt; params.length; i++) { call.addParameter("arg" + i, javax.xml.rpc.ParameterMode.IN, org.apache.axis.encoding.XMLType.XSD_STRING); call.setInParameterValue(i, params[i]); } // 执行调用并返回...

    JAVA反射机制详解

    public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { Class&lt;?&gt; ownerClass = owner.getClass(); Method method = ownerClass.getMethod(methodName, args....

    Delphi XE10.1 腾讯云短信

    Request.Params.Add('Timestamp', FormatDateTime('yyyyMMddHHmmss', Now)); Request.Params.Add('Action', 'SendSms'); Request.Params.Add('Version', '2019-07-11'); Request.Params.Add('PhoneNumbers', ...

    java基础学习内容

    Object[] params = {"EJB"}; method.invoke(obj, params); ``` ### 3. 示例代码分析 示例代码展示了一个简单的反射应用过程,其中包括了如何获取类信息、创建对象、调用方法等关键步骤。 #### 3.1 定义类 ```java ...

    Android访问webService框架

    i &lt; params.length; i += 2) { request.addProperty((String) params[i], params[i + 1]); } return request; } public SoapPrimitive callWebService(SoapObject request) throws IOException, ...

    java 中使用Flex的HttpService的详细配置

    String password = params.get("password"); // 实现处理数据的逻辑 ... return ResponseEntity.ok("Data received successfully"); } ``` 在Flex中,HttpService返回的结果会被自动解析为指定的格式。例如,...

    java反射拼接方法名动态执行方法实例

    Method method = clazz.getMethod(methodName, params.getClass().getComponentType()); // 执行方法并获取结果 return (String) method.invoke(instance, params); } ``` 这个方法接受一个方法名、一个类名和...

    struts2的学习笔记+测试源代码

    例如,`object['methodName'](params)`。 6. **值栈**: Struts2的值栈是OGNL的重要概念,它是一个存储Action对象和其他相关数据的数据结构。通过`#valueStack`,你可以访问栈顶的Action对象,即`#action`。 7. *...

    BCGControlBarPro.v12.00

    It is stored in CBCGPGridCtrl::m_PrintParams::m_pageInfo member and in CPrintInfo::m_lpUserData member of the CPrintInfo object used while printing at the current print session. Added an option to ...

Global site tag (gtag.js) - Google Analytics