public class Student{
private static int age;
}
Field field = StudentclassgetDeclaredField("age");
fieldsetAccessible(true);
fieldget(null); 普通属性获取值 需要传入对象,但是静态属性 不需要传入具体对象,传
null 也可以获取 该字段的值。
公共属性是可以通过对象来获取到的
但是私有属性 只能在当前类中访问,如果需要在另一个类中强制使用该属性,
可以通过反射来破坏封装,来实现访问 私有属性,
下面是一个简单的 小例子。可以用来帮助你理解!
import javalangreflectField;public class A {
public static void main(String[] args)throws Exception {
//获取类对象
Class clazz = Bclass;
//根据B类中的属性名c获取属性
Field f = clazzgetDeclaredField("c");
//破换封装(允许在A类中访问B类中的私有属性c)
fsetAccessible(true);
//根据反射创建b2对象
B b = (B)clazznewInstance();
Systemoutprintln("原值"+fgetInt(b));
//修改私有属性的值为100
fsetInt(b, 100);
Systemoutprintln("修改后值"+fgetInt(b));
}
}
class B{
private int c=10;
public int d =11;
}
反射不是通过get取值的,是通过该对象的信息,比如说名称、内存地址等来访问类,方法,属性等,可以获取任意对象的信息,但不能获得私有属性(private String s=“sd”;)的值,切记
推荐《JAVA核心技术》这本书会对你有帮助的
1、过去某个类的某个属性:
2,可以通过对象调用其属性:
3,创建对象 :类名 对象名 = new 类名();
4,调用属性:对象名属性
5,获取某个对象的所有属性
6,数组类型[] 数组名 = 对象名getClass()getDeclaredFields();
7,使用反射
public static void main(String[] args) {
Model model = new Model();
Field fd = new Field();
fdgetField(model);
}
private void getField(Object model) {
javalangreflectField[] fields = modelgetClass()getDeclaredFields();
for(javalangreflectField f:fields){
Systemoutprintln(fgetName());
}
}
可以
只要你创建了这个拥有私有属性的对象 就可以调用
首先你要理解private修饰是为了不允许谁都使用和修改这个属性
就类似于 你的银行账户余额属性是你的隐私 别人是不能知道的 所以 只要你不提供get方法别人就不能知道你的银行账户余额
同理 你在取钱的时候不提供密码 你也不能取钱 你不给别人密码 别人也不能盗刷你的yhk 所以只要你不提供set方法 别人无法修改你的余额 还有一点是为了不能防止属性类型不一致 你的余额是double类型 你赋值一个String 就会报错 所以使用set方法也可以有效防止这类问题的出现
至于有人提出的反射 你也可以理解为 别人破解了你的密码 盗刷你的yhk
我测试是通过的,怀疑你是否定义了属性?
static void Main(string[] args){
C c = new C();
cS = "SS";
C c1 = getObject<C>(c);
ConsoleWriteLine(c1S);//SS1
ConsoleReadLine();
}
class C
{
public string S { get; set; }//属性
}
static T getObject<T>(T t)
{
string temp = "";
SystemReflectionPropertyInfo[] propertys = tGetType()GetProperties();
foreach (SystemReflectionPropertyInfo p in propertys)
{
if (pPropertyType == typeof(string))
{
temp = pGetValue(t, null)ToString();
pSetValue(t, temp + "1", null);
}
}
return t;
}
以上就是关于反射--静态成员变量的值获取全部的内容,包括:反射--静态成员变量的值获取、java里面怎么访问同一个类里面的private属性,怎样访问不同类的属性,不同类中的private属性、java反射取对象属性值 不是通过get方法取值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)