public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
Stroke st = g2d.getStroke();
Stroke bs;
//LINE_TYPE_DASHED
bs = new BasicStroke(1, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_BEVEL, 0,
new float[]{16, 4}, 0);
g2d.setStroke(bs);
g2d.drawLine(10, 10, 10, 500);
g2d.setStroke(st);
}
|
package fanshe.entity;
/**
* 测试实体
* @author hewei
*
*/
public class Animal {
private String name;
private int age;
public int text;
public Animal(){}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public void speak(){
System.out.println("my name is "+this.name+"; i am "+this.age+"years old!");
}
private String chat(String name){
return "I chat with"+name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getText() {
return text;
}
public void setText(int text) {
this.text = text;
}
}
package fanshe;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import fanshe.entity.Animal;
/**
* java反射机制 reflection
* 运行时创建类的对象
* 访问其字段、方法
* 测试类
* @author hewei
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
try {
Class<?> classType = Class.forName("fanshe.entity.Animal"); //获得Class对象
Method[] ms = classType.getMethods();//获得对象的public方法
for(Method m : ms){
System.out.println("method "+m);
}
Field[] field = classType.getFields(); //获得该class所有声明的field(public)
for(Field f : field){
System.out.println("field "+f);
}
/**
* 创建Animal 对象
*/
Animal animal = (Animal)classType.newInstance();
animal.setAge(12);
animal.setName("小熊猫");
animal.speak();
/**
* 创建 Animal对象 通过带参构造函数
*/
Constructor<?> c = classType.getConstructor(new Class[]{String.class,int.class});
Animal animal2 = (Animal) c.newInstance(new Object[]{"大熊猫",20});
animal2.speak();
/**
* 通过反射访问对象的私有方法
*/
Method chatMethod = classType.getDeclaredMethod("chat", new Class[]{String.class});//通过getDeclareMethod()取得私有方法
chatMethod.setAccessible(true);//設置方法可見性為 true
String returnString =(String) chatMethod.invoke(animal, new Object[]{"小泽玛莉亚"});
System.out.println(returnString);
/**
* 通过反射访问对象私有属性
*/
Field privateF = classType.getDeclaredField("name");//通过getDeclaredField()取得私有字段
privateF.setAccessible(true);//设置属性的可见性为true
privateF.set(animal, "苍井空");
animal.speak();
} catch (Exception e) {
e.printStackTrace();
}
}
}
|