在Java中 ,如何对Arraylist中的对象进行其他类对象的添加、获取、返回信息等

在Java中 ,如何对Arraylist中的对象进行其他类对象的添加、获取、返回信息等,第1张

Systemoutprintln 方法输出Books对象,就会出现。

并且每次运行@后面的16进制数可能发生改变,实际上使用Systemoutprintln方法输出Books对象时,实际上输出的是Person对象的toString()方法的返回值,也就是说,下面两行代码的输出结果是一样的:

Systemoutprintln(book1);

Systemoutprintln(book1toString());

toString()方法是Object类里的一个实例方法,所有java类都是Object类的子类,因此所有java对象都具有toString方法。toString方法是一个”自我描述“方法,该方法总是返回该对象实现类的类名+@+hashCode值,这个返回值并不能真正实现”自我描述“的功能,因此如果用户需要自定义类来实现”自我描述“功能,必须重写Object的toString方法,例如下面程序:

import javautilArrayList;

import javautilList;

public class Test12 {

public static void main(String[] args) {

List<Books> bookList = new ArrayList<Books>();

Books book1 = new Books("java编程思想","Bruce Eckel",108);

Books book2 = new Books("菜根谭","洪应明",58);

Books book3 = new Books("百年孤独","加西亚·马尔克斯",108);

//添加信息

bookListadd(book1);

bookListadd(book2);

bookListadd(book3);

//获取,返回信息

for (Books book : bookList) {

Systemoutprintln(bookgetBookName()+"\t"+bookgetAuthor()+"\t"+bookgetPrice());

}

/

调用Books的toString()方法

/

Systemoutprintln(book1);

}

}

class Books{

private String bookName;

private String author;

private double price;

public Books(){

}

public Books(String bookName, String author, double price) {

thisbookName = bookName;

thisauthor = author;

thisprice = price;

}

public String toString() {

return "Books [author=" + author + ", bookName=" + bookName

+ ", price=" + price + "]";

}

public String getBookName() {

return bookName;

}

public void setBookName(String bookName) {

thisbookName = bookName;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

thisauthor = author;

}

public double getPrice() {

return price;

}

public void setPrice(double price) {

thisprice = price;

}

}

1)Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接 *** 作程序的内部属性。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。

2)考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。

import javalangreflect;

public class DumpMethods {

public static void main(String args[]) {

try {

Class c = ClassforName(args[0]);

Method m[] = cgetDeclaredMethods();

for (int i = 0; i < mlength; i++)

Systemoutprintln(m[i]toString());

} catch (Throwable e) {

Systemerrprintln(e);

}

}

}

按如下语句执行:

java DumpMethods javautilStack

它的结果输出为:

public javalangObject javautilStackpush(javalangObject)

public synchronized javalangObject javautilStackpop()

public synchronized javalangObject javautilStackpeek()

public boolean javautilStackempty()

public synchronized int javautilStacksearch(javalangObject)

3)反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、 *** 作系统和文件系统中。

这是一个强制转换的问题,问题出在这一行:

listgetClass()getMethod("add", Objectclass)invoke(list,'a');

你的 list 中只能存放 String,但是你调用的时候 invoke(list,'a') 这里传入了 'a',这是一个字符型。你可以换成 invoke(list,"a") 试试看。

第一种:通过forName()方法;

第二种:类class;

第三种:对象getClass()。

举例如下:

package

test;

public class Demo{

public static void

main(){

Class<> c1 = null;

Class<> c2 =

null;

Class<> c3 =

null;

//三种反射用实例化方式

try{

//最常用的一种形式

c1 =

ClassforName("testX");

}catch(ClassNotFoundException

e){

eprintStackTrace();

}

//通过Object类中的方法实例化

c2

= new X()getClass();

//通过类class实例化

c3 =

Xclass;

Systemoutprintln("类名:" + c1getName());

//得到类名

Systemoutprintln("类名:" + c2getName());

//得到类名

Systemoutprintln("类名:" + c3getName());

//得到类名

}

}

首先,你可以把ArrayList当做是ArrayList来看待\x0d\然后,利用ArrayList的get方法(ArrayList al=new ArrayList();\x0d\ String[] array=alget(0);)得到Arraylist中的第一个String[]数据,\x0d\最后,就是简单的在String数组中取出第一个值,即: String str=arrayget(0); \x0d\TextViewsetText(str);

一般 都是靠映射来控制这样的 *** 作,映射中可以控制方法,属性等 *** 作。所以一般开发中,做底层 *** 作,或者根据业务要求制作一个属于自己的框架 都要用到映射反射接口抽象类来制作。

如果你参加过对日项目,就会体验到,小日本子一般不会让你用你所知道的框架,一般都是自己开发好的。很多类均是自己写的,比如Arraylist他们就一般都是自己写的。

for (int i = 0; i < fieldslength; i++) {

Field field = fields[i];

String fieldName = fieldgetName();

Systemoutprintln("name====="+fieldName);

String firstLetter = fieldNamesubstring(0, 1)toUpperCase();

// 获得和属性对应的getXXX()方法的名字

String getMethodName = "get" + firstLetter + fieldNamesubstring(1);

// 获得和属性对应的getXXX()方法

Method getMethod = classTypegetMethod(getMethodName, new Class[]{});

// 调用原对象的getXXX()方法

Object value = getMethodinvoke(object, new Object[]{});

Systemoutprintln("value===="+value);

}

以上就是关于在Java中 ,如何对Arraylist中的对象进行其他类对象的添加、获取、返回信息等全部的内容,包括:在Java中 ,如何对Arraylist中的对象进行其他类对象的添加、获取、返回信息等、java 反射数组参数方法 如何反射、java反射问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9784777.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存