자바 구현 코드 - 반사
package ;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
import org.junit.jupiter.api.Test;
public class {
public void ()
throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
// ArrayList a=new ArrayList();
// int b[]={1,2,3};
// new onlyTest().function(b);
// Enum b=new Enum("afd",3);
// Class> cls;
try {
Object cls = (Object) Class.forName("java.util.ArrayList").getConstructor().newInstance();
Object clsa = (Object) Class.forName("java.util.ArrayList").getConstructor().newInstance();
System.out.println(clsa.getClass().getName());
System.out.println(Class.forName("java.util.ArrayList").getClassLoader());
// System.out.println(cls.);
ArrayList cl = (ArrayList) clsa;
// cl.add("dfa");
// System.out.println(cl.get(0));
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String s = "abcd";
System.out.println("s = " + s); //
// String value
Field valueField = String.class.getDeclaredField("value");
// value
valueField.setAccessible(true);
// s value
char[] value = (char[]) valueField.get(s);
// value 5
value[3] = 'e';
System.out.println("s = " + s); //
//
char[] a = "ghjk".toCharArray();
System.arraycopy(a, 0, value, 0, a.length);
System.out.println("s = " + s); //
valueField.set(s, new char[] { '1', '2', '3' });
// , value , , count , s
// Field countField = String.class.getDeclaredField("value");
// countField.setAccessible(true);
// countField.set(s, 3);
//
System.out.println("s = " + s + " " + s.length()); // 123
}
@SuppressWarnings("null")
@Test
public void ()
throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Object model = new user("Yien", 222, 100.1);
Field[] field = model.getClass().getDeclaredFields(); // , Field
String content = "";
for (int j = 0; j < field.length; j++) { //
String name = field[j].getName(); //
name = name.substring(0, 1).toUpperCase() + name.substring(1); // , get,set
String type = field[j].getGenericType().toString(); //
if (type.equals("class java.lang.String")) { // type , "class
// ",
Method m = model.getClass().getMethod("get" + name);
String value = (String) m.invoke(model); // getter
if (value != null) {
content += value + "\t";
}
}
if (type.equals("class java.lang.Integer")) {
Method m = model.getClass().getMethod("get" + name);
Integer value = (Integer) m.invoke(model);
if (value != null) {
content += value + "\t";
}
}
if (type.equals("class java.lang.Short")) {
Method m = model.getClass().getMethod("get" + name);
Short value = (Short) m.invoke(model);
if (value != null) {
content += value + "\t";
}
}
if (type.equals("class java.lang.Double")) {
Method m = model.getClass().getMethod("get" + name);
Double value = (Double) m.invoke(model);
if (value != null) {
content += value + "\t";
}
}
if (type.equals("class java.lang.Boolean")) {
Method m = model.getClass().getMethod("get" + name);
Boolean value = (Boolean) m.invoke(model);
if (value != null) {
String cc = value == true ? "1" : "0";
content += cc + "\t";
}
}
if (type.equals("class java.util.Date")) {
Method m = model.getClass().getMethod("get" + name);
Date value = (Date) m.invoke(model);
if (value != null) {
content += value + "\t";
System.out.println(type + "attribute value:" + value.toLocaleString());
}
}
}
System.out.println(content);
}
static class user {
private String name;
private Integer id;
private Double price;
/**
* @param name
* @param id
* @param price
*/
public user(String name, Integer id, Double price) {
super();
this.name = name;
this.id = id;
this.price = price;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id
* the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the price
*/
public double getPrice() {
return price;
}
/**
* @param price
* the price to set
*/
public void setPrice(double price) {
this.price = price;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.