有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何从main设置setter并从另一个类Java7获取getter

我有三节课;1) 主要2)setters和getter 3)另一个类。 在我的主课上,我设置了二传手。我正在寻找从另一个类访问这些值的方法。现在我得到一个空值,这是由于我创建的新实例。那么我如何才能绕过它,如何检索我在main中设置的值

public class Main{

   public static void main(String args[]){
      GettersAndSetters sg = new GettersAndSetters();
      AnotherClass copyOfSG = new AnotherClass();

      sg.setName("Mo");
      sg.setAge(20);
      sg.setIdNum("77777");

      System.out.print("Name : " + sg.getName() + " Age : " + sg.getAge()+"\n");
      System.out.println(copyOfSG.printout());
      //In here I am trying to print the value that is 
      //in my 3rd class "AnotherClass" but i am getting null. 

   }
}

输出:

Name : Mo Age : 20
Age: 0
Name: null

settersandgetter:

public class GettersAndSetters{
   private String name;
   private String idNum;
   private int age;
   public int getAge(){
      return age;
   }
   public String getName(){
      return name;
   }

   public String getIdNum(){
      return idNum;
   }

   public void setAge( int newAge){

      age = newAge;
   }

   public void setName(String newName){
      name = newName;
   }

   public void setIdNum( String newId){
      idNum = newId;
   }
}

另一类:

public class AnotherClass {

    public void printout() {
        GettersAndSetters gs1 = new GettersAndSetters();

        System.out.println("Age: " + gs1.getAge());
        System.out.println("Name: " + gs1.getName());

        System.out.println();

    }

}

共 (2) 个答案

  1. # 1 楼答案

    apache library中有一个类BeanUtil。这会对你有所帮助。这个cass设置并获取属性值

    BeanUtil.setProperty(<obje_name>, <field_name>, <field-value>);
    
    
    BeanUtil.getProperty(<object_name>, <field_name>);
    
  2. # 2 楼答案

    之所以会出现这种情况,是因为您在MainAnotherClass中创建了两个独立的GettersAndSetters实例。看:

       public static void main(String args[]){
    
          GettersAndSetters sg = new GettersAndSetters(); //first instance
          AnotherClass copyOfSG = new AnotherClass();
    
          ...
       }
    

    public class AnotherClass {
    
        public void printout() {
            GettersAndSetters gs1 = new GettersAndSetters(); //second instance
            ...
        }
    }
    

    您正在第一个实例中设置属性,但试图从第二个中读取属性。 要解决这个问题,只需按照Satya的建议,将第一个实例从Main传递到AnotherClass中的方法

    public class AnotherClass {
    
        public void printout(GettersAndSetters sg) {
            System.out.println("Age: " + sg.getAge());
            System.out.println("Name: " + sg.getName());        
            ...
        }
    }
    

    下一种说法是:

    public class Main{
    
       public static void main(String args[]){
          GettersAndSetters sg = new GettersAndSetters();
          AnotherClass copyOfSG = new AnotherClass();
    
          ...
    
          copyOfSG.printout(sg);
       }
    }