java对象对象的属性值
⑴ java对list中的对象的属性赋值和提取
public void countSim(){
for(int i = 0; i < userlist.size(); i++){
User user = userList.get(i);
///////////////和普通的操作一样使用user了 。。。。。。。。。。。。。。
⑵ java 中 对象的引用值和对象的属性值有什么区别
对象在内存的一个屋子里存放(内存像很多屋子).
对象引用值,就是屋子的门牌号,通过这个门牌号可以找到这个屋子.(并不单纯是对象内存地址)
对象属性值,就是这个对象中的属性的值 - -! 也就是类声明的成员变量.
⑶ java中怎么通过关系得到对象,通过对象得到属性值
通过关系得到对象不知道是什么意思,不过通过对象得到属性很好办,如果有个类class是student,student有个属性是name,如果想得到name,那就直接student.name;如果用的话就是Student stu = new Student();stu.getName()就可以得这个sti实例的name属性【注:student写了get和set方法】
⑷ java传过来一个对象后如何得到这个对象的所有属性值
1、过去某个类的某个属性:
2,可以通过对象调用其属性:
3,创建对象 :类名 对象名 = new 类名();
4,调用属性:对象名.属性
5,获取某个对象的所有属性
6,数组类型[] 数组名 = 对象名.getClass().getDeclaredFields();
7,使用反射
public static void main(String[] args) {
Model model = new Model();
Field fd = new Field();
fd.getField(model);
}
private void getField(Object model) {
java.lang.reflect.Field[] fields = model.getClass().getDeclaredFields();
for(java.lang.reflect.Field f:fields){
System.out.println(f.getName());
}
}
⑸ PHP得到一个Java的对象,怎么获取到这个对象里面的属性值
使用反射
public static void main(String[] args) {
Model model = new Model();
Field fd = new Field();
fd.getField(model);
}
private void getField(Object model) {
java.lang.reflect.Field[] fields = model.getClass().getDeclaredFields();
for(java.lang.reflect.Field f:fields){
System.out.println(f.getName());
}
}
⑹ java中如何取到一个对象的所有属性值,并且在创建一个相同的对象
对象的类不知道,里面属性的类型也不知道。我感觉我没救了
用反射机制吧,很轻松!比如说:只知道对象a,问你要a里面所有属性值 问题补充:udvs 写道a.getClass().getDeclaredFields()哥们,我要的是值,不是属性名,而且是私有的成员,公有的我能得到 问题补充:izhangh 写道 public static Object deepClone(Object obj) { try { ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(obj); // 从流里读回来 ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray()); ObjectInputStream oi = new ObjectInputStream(bi); return (oi.readObject()); } catch(Exception e) { } return obj; }不得不承认你是玩流高手这都想得到,但是回的还是原来的对象啊,对象里面的私有属性值还是得不到啊 问题补充:zhanghaiyangruijie 写道这个用反射有点浪费了。。不知道这样能不能解决这个兄弟的问题package com.zhy.test.prototype; public class TestClone { /** 原型模式 * @param args */ public static void main(String[] args) { try { new TestClone().cloneObject(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } public void cloneObject() throws CloneNotSupportedException { Person p = new Person(); Man man = new Man(); man.setSalory("111123"); p.setName("zhangfei"); p.setMan(man); //man.setSalory("122335");//(1) Person pp = p.getClonePerson(p); man.setSalory("122335");//(2) pp.setName("aa"); System.out.println("pp.getName()= " + pp.getName() + " pp.man.getSalory()= "+pp.getMan().getSalory()); System.out.println("p.getName()=" + p.getName()+" p.man.getSalory()= "+p.getMan().getSalory()); } } class Person implements Cloneable { private String name = ""; private Man man; public String getName() { return name; } public void setName(String name) { this.name = name; } public Person getClonePerson(Person p) throws CloneNotSupportedException { Person pp = (Person) p.clone(); return pp; } public Man getMan() { return man; } public void setMan(Man man) { this.man = man; } public Object clone() throws CloneNotSupportedException{ Person p = (Person) super.clone(); p.man = this.getMan().getCloneMan(this.getMan()); return p; } } class Man implements Cloneable{ private String salory = ""; public String getSalory() { return salory; } public void setSalory(String salory) { this.salory = salory; } public Man getCloneMan(Man man) throws CloneNotSupportedException{ Man ma = (Man)man.clone(); return ma; } } 见解独到,但是有违提议,可以鼓励鼓励 问题补充:ouchxp 写道新手.....虽然昨天我也是.....
这段代码你可以执行一下试试.
import java.lang.reflect.Field; import java.lang.reflect.Modifier; import sun.misc.Unsafe; public class TestClass { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String[] args) throws Exception { TestClass tc = new TestClass(); tc.setName("oUCHxP"); //现在是一个未知类型的对象(模拟一下) Object obj = tc; //获取对象类型,可以看到输出是TestClass类型 Class c = obj.getClass(); System.out.println(c); //创建此类型的空对象 Field fu = Unsafe.class.getDeclaredField("theUnsafe"); fu.setAccessible(true); Unsafe us = (Unsafe) fu.get(null); Object newObj = us.allocateInstance(c); //可以看到name是空的 System.out.println("newObj.name: " + ((TestClass) newObj).getName()); //获取所有成员(包括private)的值,并拷贝到新对象中 Field[] fields = c.getDeclaredFields(); for (Field f : fields) { //不拷贝static成员和final成员 if (Modifier.isStatic(f.getModifiers()) || Modifier.isFinal(f.getModifiers())) { continue; } f.setAccessible(true); Object fieldValue = f.get(obj); f.set(newObj, fieldValue); } //再看一下新对象里的内容,private成员也被复制过来了 System.out.println("newObj.name: " + ((TestClass) newObj).getName()); } }果然是老鸟,让你猜着了,但是呢,我也是本着不用反射来解题的。所以请各位再想想办法来解决这难题。 问题补充:ouchxp 写道zhanghaiyangruijie 写道这个用反射有点浪费了。。不知道这样能不能解决这个兄弟的问题..lz 写道对象的类不知道,里面属性的类型也不知道。
⑺ java 递归替换复杂对象属性值
本示例中又三个对象嵌套:
UserBO:复杂对象,其中一个属性是List<AddressBO>或者Map<AddressBO>
AddressBO:其中一个属性是SubAddressBO
SubAddressBO:包含目标属性addrId,且是string类型,查找addrId的值
任务:UserBO是一个复杂对象,该对象中肯定存在目标属性addrId(String类型,递归方法只能找string类型的属性,找其他类型自行修改代码),只是不知道addrId在哪个子属性中,如果UserBO存在多个addrId属性,那么只遍历出遇到的第一个addrId的值即可。
注意:(本例子在遍历复杂对象时,如果找到第一个目标属性,则退出,不在继续遍历,后面bolg有遍历复杂对象所有属性的文章)
1、本示例提供了两种方法来获取复杂对象中指定属性的值,一种是利用递归,另一种是直接把复杂对象转换成json串,再截取。
2、本示例对于复杂对象中不包含目标属性时,会返回空字符串。
3、目标属性可以存在于自定义类、list、map、数组中
4、复杂对象可以是复杂嵌套的BO/List<BO>/Map<Object,BO>,目标属性存在于BO中
5、对于复杂对象是这种嵌套格式(List<List<BO>>/List<Map<Object,BO>>/Map<Object,List<BO>>)的没有做测试
————————————————
版权声明:本文为CSDN博主“一路奔跑1314”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dhklsl/article/details/83992950
⑻ java 对象的属性在内存里以什么形式存在
java对象是引用类型,引用类型的对象的内存分配在堆中。
如果分配在堆中的java对象包含属性,这可以分两种情况分析:
1.属性是基本类型(byte,char,int等)的
则对象的堆内存保存的就是基本类型的值本身。
2.属性是引用类型的(String是引用类型的)
则对象的堆内存中保存的只是这个属性的引用,属性所指向的对象分配在其它堆内存中。
所以,你的理解1是对的,它就是属性是引用类型时的情况。但理解得不完整,还应包括属性是基本类型时的情形。