反射静态/非静态 方法/成员(暂时均考虑public修饰的)
2009-01-17 21:44
351 查看
注意区分静态和非静态的区别
package one.two;
import java.lang.reflect.*;
public class StaticFieldRefactor
{
public static String name = "yinbodotcc";
public String notStatic = "notStaticValue";
public static void staticMethos(int intparam)
{
System.out.println("I am static methods");
}
public void notStaticMethos()
{
System.out.println("I am not a static methods");
}
public static void main(String[] args) throws Exception
{
Class klass = Class.forName("one.two.StaticFieldRefactor");
/**
* 如果不是public修饰这个静态常量,会出错
*/
Field fld = klass.getField("name");
System.out.println(fld.get(null));
fld.set(null, "cctodobniy");
System.out.println(fld.get(null));
System.out.println("******************************");
Field field = klass.getField("notStatic");
System.out.println(field.get(new StaticFieldRefactor()));
System.out.println("******************************");
Method staticMethos =klass.getMethod("staticMethos", new Class[]{int.class});
staticMethos.invoke(null, new Object[]{new Integer(1)});
System.out.println("******************************");
Method notstaticMethos =klass.getMethod("notStaticMethos", new Class[]{});
notstaticMethos.invoke(new StaticFieldRefactor(), new Object[]{});
}
}
package one.two;
import java.lang.reflect.*;
public class StaticFieldRefactor
{
public static String name = "yinbodotcc";
public String notStatic = "notStaticValue";
public static void staticMethos(int intparam)
{
System.out.println("I am static methods");
}
public void notStaticMethos()
{
System.out.println("I am not a static methods");
}
public static void main(String[] args) throws Exception
{
Class klass = Class.forName("one.two.StaticFieldRefactor");
/**
* 如果不是public修饰这个静态常量,会出错
*/
Field fld = klass.getField("name");
System.out.println(fld.get(null));
fld.set(null, "cctodobniy");
System.out.println(fld.get(null));
System.out.println("******************************");
Field field = klass.getField("notStatic");
System.out.println(field.get(new StaticFieldRefactor()));
System.out.println("******************************");
Method staticMethos =klass.getMethod("staticMethos", new Class[]{int.class});
staticMethos.invoke(null, new Object[]{new Integer(1)});
System.out.println("******************************");
Method notstaticMethos =klass.getMethod("notStaticMethos", new Class[]{});
notstaticMethos.invoke(new StaticFieldRefactor(), new Object[]{});
}
}
相关文章推荐
- main()方法为啥必须要public static void类型的??java中的静态成员
- java 的main()方法为啥必须要public static void类型的??java中的静态成员
- main()方法为啥必须要public static void类型的??java中的静态成员
- main()方法为啥必须要public static void类型的??java中的静态成员
- main()方法为啥必须要public static void类型的??java中的静态成员
- 为什么静态成员、静态方法中不能用this和super关键字
- c# 静态成员(静态字段,属性,方法,构造器,类)
- 数组--->工具类的构造函数需私有化,成员方法为静态
- 实例成员变量不能在静态方法中访问
- java中的类修饰符、成员变量修饰符、方法修饰符。
- 《Effective Java》-考虑用静态工厂方法代替构造器
- 一些Java中类修饰,方法修饰,成员变量修饰叉乘我清楚的,我不清楚的子集
- 改善JAVA代码01:考虑静态工厂方法代替构造器
- 编写高质量代码改善C#程序的157个建议[优先考虑泛型、避免在泛型中声明静态成员、为泛型参数设定约束]
- python中的静态成员方法 和 类成员方法
- static修饰的静态方法
- Python的静态方法和类成员方法
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
- C#--第九周 任务2--定义一个静态成员方法,该方法实现字符串反转
- C++ 静态成员函数调用非静态成员函数方法