자바 매 거 진 이름 에 따라 반사 로 매 거 진 값 가 져 오기
15442 단어 Java
(1) 우선 매 거 진 인 터 페 이 스 를 새로 만 들 고 나중에 반사 적 으로 사용 합 니 다.
package com.littlematch.enums.biz;
/**
*
*/
public interface Constant {
/**
*
* @return
*/
public String desc();
/**
* int
* @return
*/
public int val();
}
(2) 다음 에 우 리 는 매 거 진 종 류 를 새로 만 듭 니 다.
이런 형식 으로 같은 업무 유형의 매 거 를 한데 묶 을 수 있 을 뿐만 아니 라 매 거 규칙 의 제한 을 받 지 않 는 다
package com.littlematch.enums;
import com.littlematch.enums.biz.Constant;
/**
* @ Description:
* @ Author :Match
* @ Date : 11:02 2018/11/28 0028
* @Version: $version$
*/
public class SystemEnum {
/**
*
* @author :Match
*/
public enum StatusEnum implements Constant {
YES(" ", 1),
NO(" ", 2);
private String desc;
private int value;
StatusEnum(String desc, int value){
this.desc = desc;
this.value = value;
}
@Override
public String desc() {
return desc;
}
@Override
public int val() {
return value;
}
}
}
(3) 테스트 클래스 테스트 를 작성 하여 데 이 터 를 얻 을 수 있 는 지
패키지 이름 + 클래스 이름 형식:
:com.littlematch.enums.base
:SystemEnum.StatusEnum
package com.littlematch.utils;
import com.littlematch.enums.biz.Constant;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
* @ Description:${description}
* @ Author :Match
* @ Date : 15:09 2018/12/12 0012
* @Version: $version$
*/
public class Test {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
//
String enumType = "SystemEnum.StatusEnum";
String[] enumArray =enumType.split("\\.");
String enum2 =enumArray[1];
// + ,
String packageName = "com.littlematch.enums.base";
Class<?> clazz1 = Class.forName(packageName+"."+enumArray[0]);
Class<? extends Object> cl = clazz1.getClass();
Class innerClazz[] = clazz1.getDeclaredClasses();
//
for (Class class1 : innerClazz) {
//
String simpleName = class1.getSimpleName();
if (simpleName.equals(enum2)) {
//
if (class1.isEnum()) {
//
Class<Enum> clazz = (Class<Enum>) Class.forName(class1.getName());
//
Enum[] enumConstants = clazz.getEnumConstants();
//
Method val = clazz.getMethod("val");
Method desc = clazz.getMethod("desc");
for (Enum enum1 : enumConstants) {
//
Object invoke1 = val.invoke(enum1);
Object invoke2 = desc.invoke(enum1);
System.out.println(invoke1.toString()+":"+invoke2.toString());
}
}
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.