A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.首先我在主程序用类A实例化了一个对象。
2.然后调用类A的方法setter方法对该对象的属性进行了设置。
3.同一个包下类B里的一个方法希望能取得这个属性已设置好的对象的数据,对其进行操作。


应该怎么实现?
我在类B里的方法中重新NEW一个类A的对象,再访问其属性,发现是一个新的对象,而不是之前那个属性已经设置好的对象了。

5 个回复

倒序浏览
我对java还不是很精通  不过我感觉 你这样试试  你的对象写在B里面  在mainclass A里面调用。 
回复 使用道具 举报
同包下想访问另一个已经实例化的对象的成员属性对吧?
你在B类重新new一个对象的属性肯定是初始值
所以你不能访问A类里创建的对象
你可以将那个类的成员属性加上static修饰,这样所有那个类的实例都共享一个属性
你也就可以访问了
回复 使用道具 举报
你是想同一个包下类B里的一个方法希望能取得这个属性已设置好的对象的数据,对其进行操作,然而你重新创建了一个A的对象,结果发现没有取到已经设置好的值。
原因是这样的,因为呢,你没有将这个变量设置为static,所以这个变量并不是A类所有对象共有的变量,针对普通的类的变量,是每次新建一个对象时,都会拷贝一份新的。所以你在类B中获取的变量就是新的。
按照你的需求描述,我们可以进行如下的操作
在B的某个方法的参数中,将A类的某个对象的引用传过来,直接使用这个引用来操作已经创建好的A对象。
代码如下
  1. Class B{
  2. ...//你的部分代码
  3. //假设此处只是需要获取A的field1的值,//打印到控制台
  4.   public void showAField(Class A){
  5.     System.out.println(A.getField1());
  6.   }
  7. ...//你的部分代码
  8. }
复制代码

希望能够帮到你!
回复 使用道具 举报
刚才试验了
A类不用说了。
你在B类这样写。
在B类写个方法。
在B类这个方法里面 拿到A的对象  a  用 a.get 就可以了。
回复 使用道具 举报
A类的代码
  1. package com.lzf.duixiang;

  2. public class A {
  3.         public String  aname;
  4.        
  5.         public String getAname() {
  6.                 return aname;
  7.         }
  8.         public void setAname(String aname) {
  9.                 this.aname = aname;
  10.         }
  11.         /**
  12.          * @param args
  13.          */
  14.         public static void main(String[] args) {
  15.                 // TODO Auto-generated method stub
  16.         }
  17.          
  18. }
复制代码


B类
  1. package com.lzf.duixiang;

  2. public class B  {
  3.        
  4.           public void  D(){
  5.                   A a=new A();
  6.                   a.getAname();
  7.           }
  8. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马