假设下面有一个pojo类
class Student
{
int id;
String name;
public void setId(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
}
因此,假设在某个类中,我正在创建一个如下所示的对象
Student s = new Student();
s.setId(1);
s.setName("Giri");
因此接下来,无论对象类型如何,我都想像下面那样打印输出,我需要动态打印。
Output:
s.setId(1);
s.setName("Giri");
有什么逻辑可以打印吗?
答案 0 :(得分:0)
我想您可以在您的pojo setter中包含打印方法:
public void setId(int id)
{
this.id = id;
System.out.println("s.setId(" + id + ");");
}
答案 1 :(得分:0)
我喜欢这个。
如果您使用任何基于JetBrains的IDE(甚至是Android Studio),那么您可以使用一个实时模板作为
Settings
-> Live Templates
-> Add(using + button)
注意:确保已启用Groovy
使其正常工作(默认情况下)。
使用soutm
创建一个新模板,它可以作为您将调用的快捷方式。如下图所示填充。请注意,如果发生冲突,可以使用任何其他快捷方式代替soutm
。模板文字为System.out.println($content$);
单击“编辑变量”选项,步骤1中定义的内容变量的值将为
groovyScript("def params = _2.collect {it + ' = [\" + ' + it + ' + \"]'}.join(', '); return '\"' + _1 + '() called' + (params.empty ? '' : ' with: ' + params) + '\"'", methodName(), methodParameters())
好的
最后,单击底部的define
以选择语言,然后选择Java
Statement
。您可以更改Expand
选项。此处它设置为Tab
,这意味着点击选项卡将展开快捷方式。如果您不想使用,请取消选中static imports
选项。
要在任何方法中测试调用soutm
,它应该扩展以打印所有变量数据。
答案 2 :(得分:0)
public static void printValues(Object object, String referenceName) {
Method[] methods = object.getClass().getMethods();
for(Method method : methods){
if(isGetter(method))
try {
if(method.getReturnType().getSimpleName().contentEquals("Date"))
{
if(method.invoke(object)!=null)
{
System.out.println(referenceName+"." + method.getName().replace("get", "set")+"(new Date(\""+method.invoke(object)+"\"));");
}
}
else if(method.getReturnType().getSimpleName().contentEquals("long"))
{
System.out.println(referenceName+"." + method.getName().replace("get", "set")+"("+method.invoke(object)+"L);");
}
else if(method.getReturnType().getSimpleName().contentEquals("String"))
{
if(method.invoke(object)!=null)
{
System.out.println(referenceName+"." + method.getName().replace("get", "set")+"(\""+method.invoke(object)+"\");");
}
}
else if(method.getReturnType().getSimpleName().contentEquals("BigInteger"))
{
if(method.invoke(object)!=null)
{
System.out.println(referenceName+"." + method.getName().replace("get", "set")+"(new BigInteger(\""+method.invoke(object)+"\"));");
}
}
else if(method.getReturnType().getSimpleName().contentEquals("double"))
{
System.out.println(referenceName+"." + method.getName().replace("get", "set")+"("+method.invoke(object)+");");
}
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static boolean isGetter(Method method){
if(!method.getName().startsWith("get")) return false;
if(method.getParameterTypes().length != 0) return false;
if(void.class.equals(method.getReturnType())) return false;
return true;
}