黑马程序员技术交流社区
标题:
给个代理的题目给大家做做
[打印本页]
作者:
黄锦成
时间:
2013-4-16 23:22
标题:
给个代理的题目给大家做做
本帖最后由 黄锦成 于 2013-4-16 23:26 编辑
在学习老张的高新技术时,就学习了反射,反射对于设计框架的人来说很常用。一般的程序员不会很经常使用它,但是我们理解好了,有时在工作中使用到它,会使问题很快被解决。
大家在学习老张高新技术时,都会学习到。现在在黑马学习,深知反射的重要性,对于深入学习框架,理解框架原理有很大的帮助。下面我直接出题目给大家做做。大家看看能不能做,答案跟帖,有金币拿哦!
1、一个javabean为Person,有属性username,password,birthday,birthday的类型是Date,其余的是String,有一个Map,它的内容为html表单用户输入的数据,
为{username="itheima",password="it123456",birthday="1998-10-11"},通过反射创建一个Person对象,并为Person对象属性赋值。
2、通过反射,将java.util.Date类的属性、方法、构造函数都打印出来。
就先这两道题了,临时上来论坛,没想好一些题目,第二题是视频上有的,我直接用了,第一题是在上课时,涉及到了,我简化了一些,希望大家能做做!之后我会准备一些题目给大家
作者:
杨冉
时间:
2013-4-17 21:34
本帖最后由 杨冉 于 2013-4-18 02:02 编辑
都发了一天了也没个沙发。。占个位置好了~
1.
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
public class Test {
public static void main(String[] args) throws Exception {
Person p = (Person) Class.forName("Person").newInstance();
HashMap<String, String> m = new HashMap<String, String>();
m.put("username", "itheima");
m.put("password", "it123456");
m.put("birthday", "1998-10-11");
Util.setProperty(p, "username", m.get("username"));
Util.setProperty(p, "password", m.get("password"));
Util.setProperty(p, "birthday", new SimpleDateFormat("yyyy-MM-dd").parse(m.get("birthday")));
System.out.println("username:" + p.getUsername());
System.out.println("password:" + p.getPassword());
System.out.println("birthday:" + p.getBirthday());
}
}
class Util {
public static void setProperty(Object obj, String propertyName, Object value)
throws Exception {
PropertyDescriptor pd = new PropertyDescriptor(propertyName, obj.getClass());
Method methodSet = pd.getWriteMethod();
methodSet.invoke(obj, value);
}
}
class Person {
private String username;
private String password;
private Date birthday;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
复制代码
2.
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("java.util.Date");
System.out.println("-----------------------------------Properties----------------------------");
Field[] properties = clazz.getDeclaredFields();
for (Field property : properties) {
StringBuilder sb = new StringBuilder(Modifier.toString(property.getModifiers()));
String type = property.getType().toString();
sb.append(" ").append(type).append(" ").append(property.getName());
System.out.println(sb);
}
System.out.println("-------------------------Methods----------------------------------------");
Method[] methods = clazz.getMethods();
for (Method method : methods) {
String name = method.getName();
StringBuilder sb = new StringBuilder(name);
sb.append('(');
Class[] params = method.getParameterTypes();
for (Class param : params) {
sb.append(param.getName());
sb.append(',');
}
if (params != null && params.length != 0)
sb.deleteCharAt(sb.length() - 1);
sb.append(')');
System.out.println(sb);
}
System.out.println("------------------------Constructors-----------------------------------");
Constructor[] constructors = clazz.getConstructors();
for (Constructor constructor : constructors) {
String name = constructor.getName();
StringBuilder sb = new StringBuilder(name);
sb.append('(');
Class[] params = constructor.getParameterTypes();
for (Class param : params) {
sb.append(param.getName());
sb.append(',');
}
if (params != null && params.length != 0)
sb.deleteCharAt(sb.length() - 1);
sb.append(')');
System.out.println(sb);
}
}
}
复制代码
作者:
PANZERLEADER
时间:
2013-4-17 21:59
先占个楼,编码中……
作者:
杜鹏飞
时间:
2013-4-17 22:33
本帖最后由 杜鹏飞 于 2013-4-17 22:35 编辑
1.
import java.util.*;
import java.sql.Date;
import java.lang.reflect.*;
class Person{
String username;
String password;
Date birthday;
public Person(String username,String password,Date birthday){
this.username = username;
this.password = password;
this.birthday = birthday;
}
}
public class P1 {
public static void main(String[] args)
throws Exception{
Map<String,String> map = new TreeMap<String,String>();
map.put("username", "itheima");
map.put("password", "it123456");
map.put("birthday", "1998-10-11");
Person p = Person.class.
getConstructor(new Class[]{String.class,String.class,Date.class}).
newInstance(new Object[]{map.get("username"),map.get("password"),Date.valueOf(map.get("birthday"))});
System.out.println(p.username + "::" + p.password + "::" + p.birthday);//测试之
}
}///:~<span style="line-height: 1.5;">itheima::it123456::1998-10-11</span>
复制代码
2.
import java.lang.reflect.*;
import java.util.Date;
public class P2 {
public static void main(String[] args) {
System.out.println("********************Constructor********************");
Constructor[] constructor = Date.class.getDeclaredConstructors();
for(int i=0;i<constructor.length;i++)
System.out.println(constructor[i]);//测试之
System.out.println("********************Method********************");
Method[] method = Date.class.getDeclaredMethods();
for(int i=0;i<method.length;i++)
System.out.println(method[i]);
System.out.println("********************Field********************");
Field[] field = Date.class.getDeclaredFields();
for(int i=0;i<field.length;i++)
System.out.println(field[i]);
}
}
复制代码
作者:
曹睿翔
时间:
2013-4-17 23:35
黄版主,先顶贴吧,我要睡了,明天 再来看,HTML这块我在看呢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2