`
qdpurple
  • 浏览: 276054 次
  • 性别: 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的使用更加灵活。

分享到:
评论
12 楼 freish 2011-04-19  
都过了这么多年了,还叫新特性。。。如同不知道foreach循环一般
11 楼 Jiagoo 2011-04-19  
经常用啊。。。

Spring JdbcTemplate和DBUtil里面貌似都是这样写的!
10 楼 qdpurple 2011-04-19  
xuehanxin 写道
java的反射你可听说


sping的IOC 就是采用这种方式 是吧
9 楼 dolwenjian 2011-04-19  
很明显 估计很多人都是了解有这么个东西,但是实际中 都没用过。。。
8 楼 xuehanxin 2011-04-19  
java的反射你可听说
7 楼 BearRui 2011-04-19  
这种特新,还是少用点好,调用这样的方法,JVM每次都会new1个object数组来保存方法中的参数,对性能有影响,
6 楼 antjava 2011-04-19  
hibernate 和 ejb 生成的方法中很多都是这样的写法。
不过自己还真是没这样写过。
5 楼 steinyxu 2011-04-19  
果然很杯具…估计楼主被新同事暗地里bs了。
4 楼 qdpurple 2011-04-19  
不好意思 在下学识 短浅虽用1.6+有一年多了 但一直没遇到这样的用法 现在知道了
3 楼 liubey 2011-04-19  
悲催 我都不忍心说你了
2 楼 liangguanhui 2011-04-18  
liuyupy 写道
LZ。。莫非一直在用 1.4 ?

估计是了……
1 楼 liuyupy 2011-04-18  
LZ。。莫非一直在用 1.4 ?

相关推荐

    根据数据库表自动产生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