java 如何调用一个私有方法里的私有成员变量

如题所述

package reflection;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/*
* 该类主要练习使用java的反射机制调用其他类的
* private方法和变量;
*/
public class MethodTest
{
public static void main(String[] args) throws Exception
{
Class<?> classType = People.class;
People p1 =(People) classType.newInstance();
// 获取指定的方法,调用People类的私有方法;
Method method = classType.getDeclaredMethod("sayHello",
new Class[] { String.class });
method.setAccessible(true);//压制java的访问修饰符;
method.invoke(p1, new Object[]{"Mr zhou"});

//获取People类的私有属性;
Field field = classType.getDeclaredField("age");
field.setAccessible(true);
field.set(p1, 12);
System.out.println(field.get(p1));
}
}

class People
{
private int age;
private String name;

public int getAge()
{
return age;
}

public void setAge(int age)
{
this.age = age;
}

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

private void sayHello(String str)
{
System.out.println("Hello: " + str);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-12-11
方法里不能定义私有成员变量,更何况私有方法。所有私有方法里不会有私有成员变量。
如果是私有方法调用私有变量的话,只能是在本类里私有变量。
第2个回答  2015-11-22
1,首先在本类中定义一个公有方法,
2,在方法体内编辑调用私有方法的私有成员变量的语句,
3,类实例化,使用对象就可以调用此私有成员变量
第3个回答  推荐于2017-10-14
new 一个这个类的对象,然后通过对象.私有变量来调用。
比如 public A{
private String x;
getx();
set();
}

get set方法我就不放出来了
public B{
A a = new A();

String result = a.getx();
}
第4个回答  2012-06-07
同一个类才能调用私有方法,私有变量只有当成返回值才能被调用

java private是什么意思
Getter方法用于取得私有成员变量的值,而setter方法则用于设置私有成员变量的值。通过这种方式,我们可以在类的内部对成员变量进行保护,同时又可以允许外部访问类的部分成员变量或方法,使得类具有更好的灵活性和可控性。

Java如何调用其他类里的变量
第一种,直接把类中变量定义成public 比如:public class A{ public void changeA(){ B b = new B();\/\/实例化B类 b.a=2;\/\/这里直接访问B类中的变量A }}public class B{ public int a=0;\/\/定义一个public变量}第二种,通过get,set方式访问变量 public class A{ p...

java中如何在主函数里引用类的方法中的变量?
你试试将fetchDictionary方法写到类GraduateResearch1_5里面,在类GraduateResearch1_5中声明私有变量A、B、C,将在main函数中要做的事放到构造函数中去完成,main函数调用构造函数,形如以下,希望可以帮到你。public class GraduateResearch1_5{ private int A,B,C,D,E;public GraduateResearch1_5(){...

Java的方法中怎样调用主函数中定义的变量?
你试试将fetchDictionary方法写到类GraduateResearch1_5里面,在类GraduateResearch1_5中声明私有变量A、B、C,将在main函数中要做的事放到构造函数中去完成,main函数调用构造函数,形如以下,希望可以帮到你。public class GraduateResearch1_5{ private int A,B,C,D,E;public GraduateResearch1_5(){...

java问题问题?
这个就是java类的封装性了,其他类想要访问一个类的私有成员变量,直接访问是不行的,这个时候这个类就可以通过setter和getter方法,向其他类暴露自己的成员变量,setter用于成员变量赋值,getter用于成员变量取值。所以我这里定义了一个T1类:然后T2里就能new一个T1,并对T1的成员变量进行赋值和取值了:运行...

一个java对象的属性是私有的,而且没有提供public的get和set方法,可以...
如果提供了get和set方法是可以实现的,因为变量是私有的,只能通过外部公用方法去访问这些变量,如果没有这些方法就只能通过本类访问,其他类没有办法访问

java中的private怎么用
public static void main(String arg[]){ A a = new A();a.setAge(10);} private 是java中封装的关键字。只要是属性就可以用来private修饰。如果要属性要被继承的话,可以使用protected来修饰。只要你在另外一个类中持有某个对象的引用,那么你就可以使用getter和setter方法来操作对象的应用。} ...

Java如何在一个类中引用另一个类的成员变量和方法
String name;public Student(){} public Student(String id,String name){ this.id = id;this.name = name;} } === public class Test(){ String ids;String names;public static void main(String[] args){ Test test = new Test();Student stu = new Student("001","jack");test.ids...

在Java中要引用对象的属性和方法,需要怎么实现?
属性:第一种就是自己定义一个public的公共属性,然后调用就行了(不安全),第二种就是创建一个private的私有的属性,生成公共的set和get方法(封装),然后调用;方法:同类中方法为静态方法可以直接调用,不为静态方法需要new和不同类中要new出对象,然后调用其方法;左上角有我头像,有很多朋友在一...

java中一个类想调用另一个类的变量,必须到方法里面吗,直接在类里面能不...
java 不能在类中初始化引用,所以不能直接在类中new一个对象出来,要使用其他类的变量,必须在自己的类的方法中先创建被引用类的实例,通过实例来引用该类的变量,但是,如果被引用的类的变量是静态的,则可以通过如下指令引用:类名.变量 来直接引用这个变量。

相似回答