자바 체험 IOC
2. IOC 가 반전 을 제어 할 때 주로 자바 의 강력 한 반사 체 제 를 이용한다.
여기에 데이터 층 을 쓰 지 않 았 습 니 다. 관심 있 는 학생 들 은 흐름 을 통 해 우리 가 필요 로 하 는 대상 을 만 들 수 있 습 니 다.
1) testreck 가방 을 만 들 고 MockSpring 클래스 를 쓰 는 방법 getBean
package testreflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Scanner;
public class MockSpring {
public Object getBean (String className) {
Object obj = null;
Scanner input = new Scanner(System.in);
try{
//
Class clazz = Class.forName(className);
//
obj = clazz.newInstance();
String name = clazz.getSimpleName();
if(name.equals("Character")){
System.out.println("Incompatible Type.");
}else{
Field[] fields = clazz.getDeclaredFields();
for(Field f:fields){
String fieldName = f.getName();
System.out.println(" "+fieldName+" :");
// setName
StringBuilder sb = new StringBuilder("set");
sb.append(fieldName.substring(0,1).toUpperCase().concat(fieldName.substring(1)));
String value = input.nextLine();
// , name String
Class fieldType = f.getType();
// String
Constructor con = fieldType.getConstructor(String.class);
//
Method m = clazz.getDeclaredMethod(sb.toString(),fieldType);
m.setAccessible(true);
m.invoke(obj,con.newInstance(value));
}
}
}catch(Exception e){
e.printStackTrace();
}
return obj;
}
}
2) 테스트 클래스 만 들 기
메모: set 방법 이 있어 야 합 니 다. 나중에 파일 에서 읽 은 흐름 을 대상 으로 바 꾸 는 것 이 목적 입 니 다.
package testreflect;
public class Person {
private String name;
private Integer age;
private String sex;
public Person () {}
public Person (String name,Integer age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public void setName (String name){
this.name = name;
}
public void setAge (Integer age){
this.age = age;
}
public void setSex (String sex){
this.sex = sex;
}
public String getName (){
return this.name;
}
}
3) 테스트
package testreflect;
public class Test {
public static void main (String[] args){
MockSpring ms = new MockSpring();
Person p = (Person)ms.getBean("testreflect.Person");
System.out.println(p.getName());
}
}
4) 알림 설정 name, age, sex 속성 은 "비 홍", "18", "남"
출력: 비 홍
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.