자바 실체 클래스 재 작성 toString () 방법
4416 단어 자바
Apache 도구 클래스 ToStringBuilder 사용 하기
// 1 ( )
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
출력 정보 가 password 와 같은 특수 필드 를 걸 러 내 려 면 다음 과 같은 방식 을 사용 할 수 있 습 니 다.
@Override
public String toString() {
return (new ReflectionToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) {
@Override
protected boolean accept(Field f) {
return super.accept(f) && !f.getName().equalsIgnoreCase("password"); //
}
}).toString();
}
ToStringBuilder 도구 클래스 는 다음 과 같은 몇 가지 디 스 플레이 방식 이 있 습 니 다.
/ 대상 및 속성 줄 표시
ToStringBuilder.reflectionToString(this);
ToStringBuilder.reflectionToString(u, ToStringStyle.DEFAULT_STYLE)
/ / 속성 줄 바 꿈 표시
ToStringBuilder.reflectionToString(u, ToStringStyle.MULTI_LINE_STYLE)
/ / 속성 명 을 표시 하지 않 고 속성 값 만 표시 합 니 다. 같은 줄 에 표시 합 니 다.
ToStringBuilder.reflectionToString(u, ToStringStyle.NO_FIELD_NAMES_STYLE)
/ / 대상 이름 약자
ToStringBuilder.reflectionToString(u, ToStringStyle.SHORT_PREFIX_STYLE)
/ / 대상 이름 을 표시 하지 않 고 속성 만 표시
ToStringBuilder.reflectionToString(u, ToStringStyle.SIMPLE_STYLE)
--------------------------------------------------------------------------------------------
또 다른 toString () 을 다시 쓰 는 방법 은 반사 체 제 를 이용 하여 실체 류 의 모든 속성 과 방법 을 얻 고 다음 과 같이 실현 하 는 것 이다.
public class ToStringUtil{
/**
* fieldName,
* @param entity
* @param fieldName
* @return
*/
public static String toString(Entity entity, String... fieldName)
{
Class cls = entity.getClass();
StringBuffer buffer = new StringBuffer(cls.getSimpleName() + ": ");
try
{
//
Method[] methods = cls.getMethods();
if(null != fieldName && fieldName.length != 0)
{
for(Method method: methods)
{
String mn = method.getName();
for(String fn: fieldName)
{
if(mn.equalsIgnoreCase("get" + fn))
{
String value = method.invoke(entity).toString();
buffer.append(mn + "=" + value + " &");
}
}
}
}
else
{
// field
Field[] fields = cls.getDeclaredFields();
for(Method method: methods)
{
String mn = method.getName();
for(Field field: fields)
{
String name = field.getName().toString();
if(mn.equalsIgnoreCase("get" + name))
{
String value = method.invoke(entity).toString();
buffer.append(name + "=" + value + " &");
}
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
return buffer.substring(0, buffer.length()-1).toString();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.