getfield

java 中getDeclaredFields() 与getFields() 的区别

旧时模样 提交于 2020-03-16 19:43:50
java 中getDeclaredFields() 与getFields() 的区别 getDeclaredFields()返回Class中所有的字段,包括私有字段。例证: Java代码 package com.test.bean; import java.sql.Timestamp; public class Person2 { private int id; private int age; private String personName; private Timestamp birthdate; public String identitify; protected String address; String phone; } @Test public void test_getDeclaredFields() { Field[]fields=Person2. class.getDeclaredFields(); for ( int i = 0; i < fields.length; i++) { Field field = fields[i]; System.out.println(field.getName()); } } 运行结果: id age personName birthdate identitify address phone getFields

Java反射之成员变量的反射

微笑、不失礼 提交于 2020-03-11 13:08:03
上一篇介绍了 Java反射之构造方法反射 。这次我们在说一说如何反射类中的成员变量并用作一个简单案例。 [一]Field类 Filed类代表字段,包含字段拥有的所有属性,比如修饰符,变量类型,值等等,Filed类中有获得这些属性的方法。 和Constructor类一样都继承了 java.lang.reflect.AccessibleObject 类,该类中有方法来判断和设置私有属性能否访问。 下面举个演示如何修改、获得某个类中的变量: Point类: public class Point { public int x; private int y; public static int z = 10; public Point(int x, int y) { super(); this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } } 测试方法: public static void main(String[] args) throws Exception { Point p = new Point(3

thinkphp3.2.3 getField用法

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-17 13:32:25
getField(id) 返回字符串 1000 getField(id,true) 返回以id为值的一维数组 Array ( [0] => 1001 [1] => 1002 [2] => 1003 ) getField('username,qq_nickname,wx_nickname') 返回二维数组 第一个参数为返回数组的键 array(1) { ["gost"] => array(3) { ["username"] => string(14) "gost" ["qq_nickname"] => NULL ["wx_nickname"] => string(15) "csdn_name" } } 来源: CSDN 作者: zxyy410119 链接: https://blog.csdn.net/zxyy410119/article/details/104016161

C# 反射的使用

倖福魔咒の 提交于 2020-01-16 03:17:21
通过对一个类的操作,分别展示C#反射各个方法的使用。 // 通过程序集名称返回Assembly对象 // 通过Assembly获取程序集中类,参数必须是类的全名 // GetMethod获取类方法 // GetProperty获取有get和set封装的字段 // GetField获取公有字段 // GetField获取私有字段 // Activator.CreateInstance创建类实例 using System; using System.Reflection; namespace CSharpTest01 { class Contact { // Read-only properties. public string Name { get; private set; } public string Address { get; private set; } public string m_sMail; int id; // Public constructor. public Contact() { } public Contact(string contactName, string contactAddress, string mail, int ID) { Name = contactName; Address = contactAddress; m_sMail =

Enum枚举

扶醉桌前 提交于 2020-01-13 04:53:52
枚举 没想到一个小小的枚举,也有这么深的知识。 为了获取枚举上一个废弃标识注解,找遍了百科,坑死我了。 还好公司有大佬,破了难题。很奇怪他是怎么知道用getField的。 --一路追踪,原来一开始想的都是内部类,怎么得到实例对象,一开始就偏了。 终于明白了。故记下本次学习历程。再次明白了关键字搜索的重要性。 1、枚举基本介绍 参考博文:-- https://www.iteye.com/blog/whitesock-728934 https://wenku.baidu.com/view/5ddd914fb307e87100f69603.html https://www.cnblogs.com/draem0507/p/4110987.html 1) Enum声明了name()方法和oridinal()方法,分别用于返回枚举值的名称和该枚举值在枚举类型中声明的顺序(从0开始)。 2)单例的实现 序列化过程中写入流的只有name ;反序列化过程中通过调用Enum.valueOf(Class<T> enumType, String name)静态方法构造枚举值,从而保证了枚举值的单例性。 3)ENUM$VALUES:是个private static final的数组。在枚举类初始化的时候,会实例化所有的枚举对象然后按顺序放在这个数组中 2、枚举的反射 参考博文:- https://blog

C++的性能优化实践

佐手、 提交于 2020-01-04 03:40:59
优化准则: 1. 二八法则:在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的;在优化实践中,我们将精力集中在优化那20%最耗时的代码上,整体性能将有显著的提升;这个很好理解。函数A虽然代码量大,但在一次正常执行流程中,只调用了一次。而另一个函数B代码量比A小很多,但被调用了1000次。显然,我们更应关注B的优化。 2. 编完代码,再优化;编码的时候总是考虑最佳性能未必总是好的;在强调最佳性能的编码方式的同时,可能就损失了代码的可读性和开发效率; 工具: 1 Gprof 工欲善其事,必先利其器。对于Linux平台下C++的优化,我们使用gprof工具。gprof是GNU profile工具,可以运行于linux、AIX、Sun等操作系统进行C、C++、Pascal、Fortran程序的性能分析,用于程序的性能优化以及程序瓶颈问题的查找和解决。通过分析应用程序运行时产生的“flat profile”,可以得到每个函数的调用次数,消耗的CPU时间(只统计CPU时间,对IO瓶颈无能为力),也可以得到函数的“调用关系图”,包括函数调用的层次关系,每个函数调用花费了多少时间。 2. gprof使用步骤 1) 用gcc、g++、xlC编译程序时,使用-pg参数,如:g++ -pg -o test.exe test.cpp

《Think in Java》

断了今生、忘了曾经 提交于 2020-01-01 02:04:15
chapter 1 对象导论 面向对象程序设计(Object-oriented Programming ,OOP) chapter 2 一切都是对象 字段和方法 若类的某个 成员变量 是基本数据类型,即是没有进行初始化,java也会确保它获得一个默认值。    局部变量 没有默认值,必须初始化。 方法、参数和返回值 static 关键字    chapter 3 操作符 import static 是导入这个类中的静态方法,然后调用静态方法就可以直接用方法名,而不用"类名.",但要注意导入的方法名有相同的调用时会报错。 java操作符   String 类支持“+”和“+=”。 优先级 关系操作符   对于引用型数据,==和!=比较的是对象的引用,基本类型数据可以直接比较值。equals()可以比较引用型数据的值,equals方法内部是将引用型数据的值转换为基本类型并用== 比较。 字符串操作符   如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型。 类型转换操作符    chapter 4 控制执行流程 逗号操作符   for循环中用到逗号操作符。 for(int i=1,j=i+10;i<5;i++,j=i*2) { System.out.println("i="+i+",j="+j); } Foreach 语法   for(float x : f){} /

一个Java对象到底占多少内存

与世无争的帅哥 提交于 2019-12-26 16:15:05
内存是程序员逃不开的话题,当然Java因为有GC使得我们不用手动申请和释放内存,但是了解Java内存分配是做内存优化的基础,如果不了解Java内存分配的知识,可能会带偏我们内存优化的方向。所以这篇文章我们以“一个对象占多少内存”为引子来谈谈Java内存分配。 文章基于JDK版本:1.8.0_191 文章标题提出的问题是”一个对象到底占多少内存“,看似很简单,但想说清楚并不容易,希望本文的探讨能让你有收获。 在开始之前我还是决定先提一个曾经阴魂不散,困扰我很久的问题,了解这个问题的答案有助于我们理解接下来的内容。 Java虚拟机如何在运行时知道每一块内存存储数据的类型的? 我们知道Java中int占4个字节,short占2个字节,引用类型在64位机器上占4个字节(不开启指针压缩是8个字节,指针压缩是默认开启的),那JVM如何在运行时知道某一块内存存的值的类型是int还是short或者其他基础类型,亦或者是引用的地址?比如以int为例,4个字节只够存储int数据本身,并没有多余的空间存储数据的类型! 想解答这个问题,需要从字节码入手,还需要我们了解一些Java虚拟机规范的知识, 来看一个简单的例子 public class Apple extends Fruit{ private int color; private String name; private Apple brother

【C#】详解使用Enumerable.Distinct方法去重

耗尽温柔 提交于 2019-12-19 09:56:53
Enumerable .Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组、集合中的重复元素,还可以自定义去重的规则。 有两个重载方法: // // 摘要: // 通过使用默认的相等比较器对值进行比较返回序列中的非重复元素。 // // 参数: // source: // 要从中移除重复元素的序列。 // // 类型参数: // TSource: // source 中的元素的类型。 // // 返回结果: // 一个 System.Collections.Generic.IEnumerable<T>,包含源序列中的非重复元素。 // // 异常: // System.ArgumentNullException: // source 为 null。 public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source); // // 摘要: // 通过使用指定的 System.Collections.Generic.IEqualityComparer<T> 对值进行比较返回序列中的非重复元素。 // // 参数: // source: // 要从中移除重复元素的序列。 // // comparer: //

ThinkPHP 读取数据

梦想与她 提交于 2019-12-03 23:08:16
在ThinkPHP中读取数据的方式很多,通常分为读取数据、读取数据集和读取字段值。 步进电机和伺服电机 数据查询方法支持的连贯操作方法有: 连贯操作 作用 支持的参数类型 where 用于查询或者更新条件的定义 字符串、数组和对象 table 用于定义要操作的数据表名称 字符串和数组 alias 用于给当前数据表定义别名 字符串 field 用于定义要查询的字段(支持字段排除) 字符串和数组 order 用于对结果排序 字符串和数组 group 用于对查询的group支持 字符串 having 用于对查询的having支持 字符串 join 用于对查询的join支持 字符串和数组 union 用于对查询的union支持 字符串、数组和对象 distinct 用于查询的distinct支持 布尔值 lock 用于数据库的锁机制 布尔值 cache 用于查询缓存 支持多个参数 relation 用于关联查询(需要关联模型支持) 字符串 result 用于返回数据转换 字符串 scope 用于命名范围 字符串、数组 bind 用于数据绑定操作 数组 comment 用于SQL注释 字符串 fetchSql 不执行SQL而只是返回SQL 布尔值 注意:某些情况下有些连贯操作是无效的,例如limit方法对find方法是无效的。 读取数据 读取数据是指读取数据表中的一行数据(或者关联数据)