【问题标题】:How to transfer object from one class to another class - JAVA如何将对象从一个类转移到另一个类 - JAVA
【发布时间】:2016-11-25 00:38:14
【问题描述】:

我试图在饼图中显示百分比值,因为我在Personalityclass 中有百分比值,而Chart 类是我需要显示它的地方。我的代码结构如下:

Personality.JAVA

   Tree C = gson.fromJson(profile.toString(), Tree.class);  

                Tree.SubTree t = C.getTree(); 
                ArrayList<Children> mc = t.getChildren();
                Children c1 = mc.get(0);

                ArrayList<Children1> c2 = c1.getChildren();
                Children1 obj1 = c2.get(0);

                private Children1 obj1; //ERROR-ILEGAL START OF EXPRESSION 


                public Children1 getObj1(){
                return this.obj1;
               } 

         /**       ArrayList<child2> c3 = obj1.children;
                child2 obj2 = c3.get(0);

                ArrayList<child3> c4 = obj2.children;
                child3 obj3 = c4.get(0);  **/


                System.out.println(obj1.getPercentage()); //ERROR - IDENTIFIER EXPECTED

Children1.JAVA

   public class Children1 {
     private String category;
     private String id;
     private String name;
     private double percentage;
     private double sampling_error;
     private ArrayList<Children2> children;

    public Double getPercentage() {
     return percentage;
   }
/**
* 
* @param percentage
* The percentage
*/
    public void setPercentage(Double percentage) {
    this.percentage = percentage;
    }
}

Tree.JAVA(不确定这个类是否必要,但在这里)

public class Tree {
    private SubTree tree;  
    @Override
    public String toString() {
        return "ID: " + id + "\n" + "Name: "+ "\n" + tree+ "\n" ;
    }  
    class SubTree{
    private String id;
    private String name;
    private ArrayList<Children> children; //Gets Arraylist from Class - Children


    public ArrayList<Children> getChildren() {
    return children;
    }

    public void setChildren(ArrayList<Children> children) {
    this.children = children;
    }     
    }

   public SubTree getTree() {
     return tree;
   }

    public void setTree() {
    this.tree = tree;
    }

}

图表类

private PieDataset createDataset(){
   Personality m = new Personality();
  // Personality.class = Personality();
    DefaultPieDataset result = new DefaultPieDataset();
    result.setValue("Value1",m.obj1 ); //attempted to get obj1 from Persoanlity Class
    result.setValue("Linux", 10);
    result.setValue("Mac", 25);
    return result;
}

所以整个程序是 - 将普通段落转换为 json,然后在使用 java 值生成图形后解析为 java。所以在这种情况下,获取百分比值obj1 以显示在Chart class 中。

希望你们理解这个问题并感谢你们的时间:)

【问题讨论】:

  • 我和@Luminous_Dev 在一起——你需要传输数据——那么是什么阻止你这样做,也许是通过构造函数或方法参数?并考虑将你的代码压缩成一个可行的minimal reproducible example/sscce
  • 在 Chart 类中它说当鼠标悬停在 m.obj1 部分时找不到符号。
  • 为什么要直接访问字段?为什么不使用公共 getter 方法来控制访问?
  • 如果您向我们提供 Personality 类代码,我们可能会看到它的原因。
  • @Luminous_Dev:但也不应该公开。

标签: java jfreechart personality-insights


【解决方案1】:

您必须使Children1 对象在Personality 类中可见。目前看起来obj1 只是一个局部变量,它的作用域只对该局部方法可见

如果在 Personality 中,您有一个字段 Children1 obj1,那么这可以由本地方法或构造函数设置。如果Children1 obj1 的范围是公共的,或者最好它有一个getter 方法,那么你可以从Chart class 中读取它,假设Children1 obj1 是在构造函数中创建的,即Personality m = new Personality();

假设您的 Personality 类看起来像

public Personailty {
   ....
}

然后你将添加,使其看起来像

public Personailty {
   ....
   private Children1 obj1;

   public Children1 getObj1(){
      return this.obj1;
  } 
}

【讨论】:

  • 感谢您的回答!但是我不确定如何公开范围我试图为 Children1 创建一个 getter 并返回为 obj1 但它不起作用我认为我做错了。
  • 我已经为你更新了我的答案。还请编辑您的问题以显示Personality 代码的位置,例如构造函数,本地方法
  • Children1 是一个数组列表? Children1 是一个类,看你的问题
  • 对不起,我来晚了,我累了。代码已更新,我已经注释了导致错误的部分。
  • 要么你太累了,要么你咬的东西多到不能咀嚼,要么我的指示是废话。我编辑的代码显示您需要Children1 obj1 添加为类字段并创建getter 方法。如果你不能做到这一点,你需要获得一些更基本的帮助。
【解决方案2】:

如果您在 Personality 类中有名为 obj1 的属性,以下可能的解决方案。

个性类应该有:

private Children1 obj1;

public Children1 getObj1(){
    return this.obj1;
} 

.

更改此代码

ArrayList<Children1> c2 = c1.getChildren();
Children1 obj1 = c2.get(0);

ArrayList<Children1> c2 = c1.getChildren();
this.obj1 = c2.get(0);

在你的 Chart 类上

DefaultPieDataset result = new DefaultPieDataset();
result.setValue("Value1",m.getObj1()); //attempted to get obj1 from Persoanlity Class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多