「java取对象」java中获取对象的方式有哪几种
本篇文章给大家谈谈java取对象,以及java中获取对象的方式有哪几种对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 获取对象的数据类型的方法
- 2、java 怎样获得一个类的当前对象
- 3、java怎样获得一个对象的类型
- 4、java 获得对象几种方法
- 5、java根据对象属性从对象列表中取出对象
- 6、java从文件读取对象
java 获取对象的数据类型的方法
使用getClass方法可以获取一个对象的类型类,然后在调用该类的方法可以获取该类的相关信息,比如父类的名字,该类的名字等等:
package test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Demo2 {
String username = "sss";
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException, NoSuchMethodException {
Demo2 t = new Demo2();
if (Demo2.class == t.getClass()) {
System.out.println("equal");
}
// 获取类名
System.out.println(t.getClass().getName());
// 获取父类名
System.out.println(t.getClass().getSuperclass());
//获取类中某个属性
Field f = t.getClass().getField("username");
//获取类中某个方法
Method m = t.getClass().getDeclaredMethod("main", String[].class);
}
}
java 怎样获得一个类的当前对象
.class获得的是类的class对象,可不是这个类的对象,用class
变量名接收,用这个class对象通过反射机制可以通过newinstence创建出这个类的对象而且只能调用无参数构造器
java怎样获得一个对象的类型
java中获取一个对象可以使用单例模式,实例如下:
Class A:
public class A {
public void SayHello() {
System.out.println("Say Hello From Class A");
}
public static A getInstanceOfA() {
return new A();//A类中A的实例变量
}
private A(){}
}
Class B:
public class B {
public static void main(String[] args) {
A a = A.getInstanceOfA();//返回的是A类中的A的实例变量
a.SayHello();//调用A中的SayHello方法
}
}
java 获得对象几种方法
java获得对象的方法
通过new关键字来进行获取对象。
如:Test test=new Test();
通过反射手段,调用java.lang.class或者java.lang.reflect.Constructor中的newInstance()进行获取对象。
如:Test test=(Test)Class.forname("com.test.Test").newInstance();
Test test=Test.class.newInstance();
通过反序列化获取对象
如:testInputStream textin = new ObjectInputStream(new FileInputStream ("test.obj"));
Test test= (Test) in.readObject();
clone()克隆方法
Test test2=(Test)test1.clone();
java根据对象属性从对象列表中取出对象
package test;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
public class AList extends ArrayListA {
/**
*
*/
private static final long serialVersionUID = -5626405721508120479L;
public A getSubject(String name, Object value)
throws IllegalAccessException, IllegalArgumentException,
InvocationTargetException, IntrospectionException {
A[] result = getSubjects(name, value);
if (result.length = 0)
return null;
else
return result[0];
}
public A[] getSubjects(String name, Object value)
throws IntrospectionException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
PropertyDescriptor pd = new PropertyDescriptor(name, A.class);
Method getter = pd.getReadMethod();
IteratorA it = this.iterator();
A[] result = new A[0];
while (it.hasNext()) {
A obj = it.next();
Object theValue = getter.invoke(obj);
if (theValue != null theValue.equals(value)) {
result = Arrays.copyOf(result, result.length + 1);
result[result.length - 1] = obj;
}
}
return result;
}
public static void main(String[] args) throws IllegalAccessException,
IllegalArgumentException, InvocationTargetException,
IntrospectionException {
AList al = new AList();
A a = new A("张三");
a.setAge(18);
a.setGender("男");
a.setSchool("XX大学");
A b = new A("李四");
b.setAge(20);
b.setGender("男");
b.setSchool("XX大学");
A c = new A("王五");
c.setAge(18);
c.setGender("女");
c.setSchool("XX大学");
al.add(a);
al.add(b);
al.add(c);
System.out.println(Arrays.toString(al.getSubjects("name", "张三")));
System.out.println(Arrays.toString(al.getSubjects("age", 18)));
System.out.println(Arrays.toString(al.getSubjects("gender", "男")));
System.out.println(Arrays.toString(al.getSubjects("school", "XX大学")));
// [A [name=张三, age=18, gender=男]]
// [A [name=张三, age=18, gender=男], A [name=王五, age=18, gender=女]]
// [A [name=张三, age=18, gender=男], A [name=李四, age=20, gender=男]]
// [A [name=张三, age=18, gender=男], A [name=李四, age=20, gender=男], A [name=王五, age=18, gender=女]]
}
}
class A {
private String name;
private int age;
private String gender;
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public A(String name) {
super();
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "A [name=" + name + ", age=" + age + ", gender=" + gender + "]";
}
}
java从文件读取对象
可以使用 ObjectOutputStream 将对象写入文件中,使用 ObjectInputStream 类从文件中读取出对象。
代码如下:
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
class Person implements Serializable {
private static final long serialVersionUID = -3527230407404080537L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
public class App34 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ListPerson persons = new ArrayList();
persons.add(new Person("张三", 20));
persons.add(new Person("李四", 25));
File file = new File("persons.data");
// 创建文件输出流
FileOutputStream output = new FileOutputStream(file);
// 创建对象输出流
ObjectOutputStream oOutput = new ObjectOutputStream(output);
// 将整个数组列表输出至文件
oOutput.writeObject(persons);
// 或者逐个将对象输出至文件,读取时需要逐个读取
/*for (Person p : persons) {
oOutput.writeObject(p);
}*/
oOutput.close();
output.close();
// 创建文件输入流
FileInputStream input = new FileInputStream(file);
// 创建对象输入流
ObjectInputStream oInput = new ObjectInputStream(input);
// 读出整个对象列表
ListPerson persons2 = (ListPerson) oInput.readObject();
for (Person p : persons2) {
System.out.println(p);
}
// 或者逐个读取对象
/*Person p1 = null;
try {
while((p1 = (Person) oInput.readObject()) != null) {
System.out.println(p1);
}
} catch (EOFException e) {
System.out.println("读取对象结束");
}*/
oInput.close();
input.close();
}
}
关于java取对象和java中获取对象的方式有哪几种的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-21,除非注明,否则均为
原创文章,转载请注明出处。