2016-11-25 163 views
0

我想在饼图中显示百分比值,因为我有Personality类中的百分比值,而Chart类是我需要显示的类它。我的代码结构如下:如何将对象从一个类传送到另一个类 - JAVA

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; 
    } 

} 

CHART类

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

希望你们明白这个问题,谢谢你们的时间:)

+1

所以这个问题是什么? –

+0

我与@Luminous_Dev - 你需要传输数据 - 所以有什么阻止你这样做,也许通过构造函数或方法参数?并考虑将你的代码压缩成一个可行的[mcve]/[sscce](http://sscce.org)。 –

+0

在Chart类中,它说当悬停在m.obj1部分上时找不到符号。 –

回答

1

你必须使Children1对象从Personality类可见。目前,它看起来像obj1仅仅是一个局部变量,如果性格,你有一个字段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; 
    } 
} 
+0

感谢您的回答!但我不确定如何使范围公开我已经试图为儿童1做一个getter并返回为obj1但它不起作用我认为我做错了。 –

+0

我已经为你更新了我的答案。还请编辑您的问题,以显示“个性”代码的位置构造函数,本地方法 –

+0

* Children1是一个数组列表?* ** Children1是一个类,看到你的问题** –

0
下面

可能的解决方法,如果你有人称OBJ1人格CLA属性SS。

个性类应该有:

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); 

并在您的图表类

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