- 浏览: 2652780 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
java的数组对象比较特殊,如果一个方法的参数申明是Long[],但你传递一个Object[]数据(当然实际值是Long)会报错。
这时候就需要通过java.lang.reflect.Array
java.lang.reflect.Array
Working with arrays via Java Reflection is done using the java.lang.reflect.Array
class.
Do not confuse this class with the java.util.Arrays
class in the Java Collections
suite, which contains utility methods for sorting arrays, converting them to collections etc.
Creating Arrays
Creating arrays via Java Reflection is done using the java.lang.reflect.Array
class.
Here is an example showing how to create an array:
int[] intArray = (int[]) Array.newInstance(int.class, 3);
This code sample creates an array of int
. The first parameter int.class
given
to the Array.newInstance()
method tells what type each element in the array should
be of. The second parameter states how many elements the array should have space for.
Accessing Arrays
It is also possible to access the elements of an array using Java Reflection. This is done via
the Array.get(...)
and Array.set(...)
methods. Here is an example:
int[] intArray = (int[]) Array.newInstance(int.class, 3); Array.set(intArray, 0, 123); Array.set(intArray, 1, 456); Array.set(intArray, 2, 789); System.out.println("intArray[0] = " + Array.get(intArray, 0)); System.out.println("intArray[1] = " + Array.get(intArray, 1)); System.out.println("intArray[2] = " + Array.get(intArray, 2));
This code sample will print out this:
intArray[0] = 123 intArray[1] = 456 intArray[2] = 789
Obtaining the Class Object of an Array
One of the problems I ran into when implementing the script language in
Butterfly DI Container
was how to obtain the Class
object
for arrays via Java Reflection. Using non-reflection code you can do like this:
Class stringArrayClass = String[].class;
Doing this using Class.forName()
is not quite straightforward. For instance, you can access the
primitive int
array class object like this:
Class intArray = Class.forName("[I");
The JVM represents an int via the letter I
. The [
on the left means
it is the class of an int
array I am interested in. This works for all other
primitives too.
For objects you need to use a slightly different notation:
Class stringArrayClass = Class.forName("[Ljava.lang.String;");
Notice the [L
to the left of the class name, and the ;
to the right. This means an array of objects with the given type.
As a side note, you cannot obtain the class object of primitives using Class.forName()
.
Both of the examples below result in a ClassNotFoundException
:
Class intClass1 = Class.forName("I"); Class intClass2 = Class.forName("int");
I usually do something like this to obtain the class name for primitives as well as objects:
public Class getClass(String className){ if("int" .equals(className)) return int .class; if("long".equals(className)) return long.class; ... return Class.forName(className); }
Once you have obtained the Class
object of a type there is a simple way to obtain
the Class
of an array of that type.
The solution, or workaround as you might call it, is to create an empty array of the desired type and
obtain the class object from that empty array. It's a bit of a cheat, but it works. Here is how that looks:
Class theClass = getClass(theClassName); Class stringArrayClass = Array.newInstance(theClass, 0).getClass();
This presents a single, uniform method to access the array class of arrays of any type. No fiddling with class names etc.
To make sure that the Class
object really is an array, you can call the
Class.isArray()
method to check:
Class stringArrayClass = Array.newInstance(String.class, 0).getClass(); System.out.println("is array: " + stringArrayClass.isArray());
Obtaining the Component Type of an Array
Once you have obtained the Class
object for an array you can access its component type
via the Class.getComponentType()
method. The component type is the type of the items in
the array. For instance, the component type of an int[]
array is the int.class
Class
object. The component type of a String[]
array is the java.lang.String
Class
object.
Here is an example of accessing the component type array:
String[] strings = new String[3]; Class stringArrayClass = strings.getClass(); Class stringArrayComponentType = stringArrayClass.getComponentType(); System.out.println(stringArrayComponentType);
This example will print out the text "java.lang.String" which is the component type
of the String
array.
发表评论
-
Raft
2018-07-12 14:20 733前言 上篇文章说解决问题要分而治之,先把分片的问题解决了再 ... -
java uuid
2017-09-14 18:18 555在java中产生uuid的方式是使用java.util.UU ... -
JAVA 编码规范
2017-09-06 11:34 406https://google.github.io/style ... -
mac 入门
2015-12-01 16:28 622http://foocoder.com/blog/wo-zai ... -
java 反编译工具gad
2014-05-09 12:04 963java 反编译工具gad,备个份。 -
java 代码大全(code book)
2014-04-29 10:59 1058参考这里: http://www.java2s.com/C ... -
SQL语法解析器JSQLParser
2014-02-09 19:53 2138SQL 语法解释器jsqlparser 是用java ... -
BufferedInputStream 深入研究。
2013-11-19 13:26 14181. BufferedInputStream的基本原理 ... -
java 启动脚本
2013-08-22 19:08 976java 启动脚本 #!/bin/bash cmd=&q ... -
CRLF escape
2013-08-06 17:51 1192最近需要对用户输入的CRLF即(\r\n)做escape, ... -
安全的自增类
2013-07-22 18:16 982java中一个计数器如果超过MAX_VALUE再自增会如何? ... -
solr日志被block的问题
2013-05-23 16:48 1255"catalina-exec-22386" ... -
beanMapper
2013-01-13 22:43 884实在被一堆get,set搞烦了,周末写了一个beanMappe ... -
java instanceof ,isInstance(),isAssignableFrom之前的差异
2013-01-06 11:00 958public class ItemQuery { ... -
通过gzip对字符串压缩
2012-12-22 18:10 3102通过GZIPOutputStream,GZIPInputStr ... -
关于URL编码
2012-12-21 14:18 1102一、问题的由来 URL就是网址,只要上网,就一定会用到。 ... -
spring的FactoryBean机制
2012-11-20 16:18 1221spring可以通过的FactoryBean的形式把一个Fac ... -
HashMap cpu占用 100%
2012-11-10 22:22 1805今天在重现出HashMap cpu占用100%了,只 ... -
文字扫描工具--java.util.Scanner
2012-11-10 14:33 1091A simple text scanner which c ... -
一个隐形的java int溢出
2012-11-06 22:17 1103故事的背景: 笔者最近在做一个类SNS的项目, ...
相关推荐
在C#编程语言中,动态声明与使用对象数组是一种常见的操作,特别是在处理不确定数量的数据时。本实例将探讨如何在C#中实现这一功能,并关注数组的声明、使用、数据保护以及内存管理。 首先,我们要了解C#中的数组。...
- 使用 `new Array()` 构造函数创建数组。 - 或者使用数组字面量 `[ ]` 来定义数组。 ```javascript var names = new Array("张三", "李四", "王五"); // 或者 var names = ["张三", "李四", "王五"]; ``` 3...
### C++Builder动态对象数组:TList类、DynamicArray与STL中的Vector容器 #### TList 类 在C++Builder中,TList是用于管理动态对象数组的一种方式。它提供了较为简便的方式来创建、管理和销毁一系列对象。TList...
如果我们在自由存储区中创建的数组存储了内置类型的 const 对象,则必须为这个数组提供初始化。例如: ```cpp const int *pci_ok = new const int[100](); // ok: value-initialized const array ``` C++ 允许定义类...
在C++ Builder中,动态数组的创建方式略有不同,因为它是基于Delphi的面向对象环境,支持更高级的语法特性。例如,创建一个动态整数数组可以这样写: ```cpp int* arr = new int[size]; ``` 或者使用内置的`__array...
在JavaScript中,关联数组(也称为哈希表或字典)是一种特殊的数据...在动态创建关联数组时,确保你清楚地知道是在创建一个数组还是一个对象,以及如何正确地遍历和操作它们。理解这两者的差异是避免混淆和错误的关键。
这篇关于“经典ASP读取JSON字符串/生成JSON对象,数组对象等”的知识将详细介绍如何在ASP环境中处理JSON数据。 1. **JSON对象与数组的结构**: JSON对象以大括号{}表示,键值对之间用逗号分隔。键必须是字符串,用...
这将在控件数组中创建五个Button对象。 2. 添加控件到数组: 要向数组中添加控件,可以使用Add方法,如`Set buttons(i) = New Button`,并设置控件的属性,如位置、大小、文本等。之后,可以将其添加到窗体上,如`...
在JavaScript中,数组和对象是两种非常基础且重要的数据结构,它们被广泛应用于各种场景,如数据存储、逻辑处理和对象表示。这篇文章将深入探讨这两种数据类型,以及相关的操作和工具。 **一、数组** 数组在...
数组的创建有两种方式:静态初始化和动态初始化。 1. 静态初始化: 在声明数组时直接指定元素的值,例如: ```java int[] arr = new int[]{10, 30, 20, 35, 5}; String[] names = new String[]{"西门", "全蛋", ...
当我们谈论“数组对象”时,我们通常指的是数组中的元素是对象,而不是基本数据类型(如int,double等)。在Java中,数组可以存储基本类型的数据,也可以存储对象的引用。本节将深入探讨对象数组和二维数组的概念,...
考虑到VB中的集合类(如`Collection`),它们在某些情况下可以作为动态数组的替代品,特别是当数组需要存储不同类型对象时。集合类提供了更多的灵活性,但相比数组,它们的访问速度可能会慢一些。 9. **数组操作...
- 返回值:成功创建返回环形数组对象指针,失败返回`NULL`。 4. **删除动态环形数组** ```c void ringbuf_delete(ringbuf_t *obj); ``` - `obj`:环形数组对象。 - 返回值:无。 5. **获取环形数组已使用...
使用这个函数,即使面对动态变化的多维数组结构,也能准确地计算元素数量。 总之,JavaScript中的数组和对象提供了强大的数据组织能力。它们可以灵活地混合使用,支持一维、二维乃至更高维度的数组,以及嵌套的对象...
拷贝赋值运算符确保当一个动态数组对象被赋值给另一个对象时,正确地处理内存。析构函数则在对象生命周期结束时释放分配的内存,防止内存泄漏。例如: ```cpp // 拷贝赋值运算符 DynamicArray& operator=(const ...
在Java编程语言中,动态数组链表是一种常见的数据结构,它结合了数组和链表的特点,既能快速访问数组中的元素,又能方便地进行插入和删除操作。本文将深入探讨Java中实现动态数组链表的关键概念、操作以及其实现方式...
2. **函数接口设计**:为了在DLL中返回动态数组,函数的返回类型不能直接是动态数组,因为C++不允许返回动态分配的对象。一种常见的解决方法是返回数组的指针,同时通过参数传递数组的大小。例如: ```cpp extern ...
2. **`reduce()` 和 `indexOf()`**:或者,我们可以使用`reduce()`方法来创建一个新的数组,只包含两个数组共同的元素。 ```javascript let commonElements = obj1.arr1.reduce((acc, current) => { if (obj2.arr2...
// 创建一个初始大小为10的整数动态数组 ``` #### 复制数组 ```cpp Array<int> copyArr = arr; // 使用赋值操作符复制数组 ``` #### 访问元素 ```cpp arr[0] = 5; // 设置第一个元素的值为5 int firstElement = ...