我在课程actionPerformed()
的{{1}}方法中进行了计算。结果是两个包含双精度A
和C[]
的数组。如何将其发送到另一个班级D[]
?
答案 0 :(得分:1)
你可以通过多种方式实现这一目标。
重要的部分是:
B
B
提供某种方法来接收您要发送的值。我推荐一种某种类型的setter方法你也可以使用一个基本相同的公共模型,但是B
对A
的公开较少,这使得A
更难以对{{1}做顽皮的事情它可能不应该;)
答案 1 :(得分:0)
你有很多方法。正确的一个取决于您使用的对象模型的结构。
但是,您必须了解两个基本概念:
为了让A
的实例(称之为a1
)能够与B
的实例(b1
)进行通信,a1
必须有办法“把他的手”放在b1
的引用上。一些示例方法是:
A
获取对B
实例的引用作为其构造函数或其他“set”方法的参数,然后将其存储为为此目的而创建的字段。a1
和b1
共享班级C
的常见实例。 c
可以是a1
和b1
的'父级'(即包含它们),也可以是管理程序中某个流程的“管理员”组件。static
\ singleton
方式。 B
类存储自身的静态实例,允许从程序中的任何位置引用它。一个类暴露给其他人的接口应该设计得很好,以实现许多重要的概念,例如:代码的可读性,安全性和“隐藏性”,可靠性等。这也取决于A
和{ {1}}存储在同一个包中,或者是彼此的内部类,或者甚至是彼此继承的。
一些标准的沟通方式是:
B
中的字段B
被曝光,并允许直接写入其中。这主要是一种不良行为(根据经验,如果不是public
,所有字段应至少为protected
。private
方法:set
有一个set方法,用于接收计算出的数据,对其进行处理并将其存储在其字段中(或传递给它)。B
将计算出的数据存储在自身中,并通过调用其中的适当方法让所有已注册的“侦听器”知道新数据可用。侦听器具有对相关字段的读访问权,或者数据作为参数传递,然后侦听器(A
)决定如何处理数据。答案 2 :(得分:0)
创建一个B类实例,并将计算结果传递给该实例。
这是一个非常基本的问题,一旦你有了一些经验就很容易解决。您可能会发现Object-oriented programming上的wiki很有用。一旦你理解了它就是它强大的东西。
以下是您的一些例子......
public class ClassB{
double multiplier;
public ClassB(){
//this will be called when you create an instance of class B
//with no arguments. Also called the default constructor, or empty-arg
//constructor.
multiplier = 2;
}
public void setMultiplier(double value){
multiplier = value;
}
public void calculate(double[] c, double[] d){
//do nifty stuff, like multiply every value in c and d!
for(int i=0;i<c.length;i++){
c[i] *= multiplier;
d[i] *= multiplier;
}
}
}
// and in your class having the action performed method...
//create an instance of class b. This will call the empty-arg constructor.
ClassB classB1 = new ClassB();
ClassB classB2 = new ClassB();
public void actionPerformed(ActionEvent e){
double[] c1 = new double[10];
double[] d1 = new double[10];
double[] c2 = new double[10];
double[] d2 = new double[10];
//call classB1 calculate method. This will multiply c1 and d1 by 2,
//as classb1's multiplier is 2.
classB1.calculate(c1, d1);
classB2.setMultiplier(4);
//call classB2 calculate method. This will multiply c2 and d2 by 4,
//as classb2's multipler has been set to 4.
classB2.calculate(c2, d2);
}
这只是面向对象编程可以为您做的一个简单示例。除此之外还有更多要学习的东西,但是你显然刚刚开始我不会压倒你。
答案 3 :(得分:0)
尝试制作两个阵列C&amp; D静态。使这些静态将允许其他类访问它。否则,您应该通过参数将其传递给构造函数。
参数方法:
public class A implements ActionListener{
Array C;
Array D;
Bclass B = new Bclass(C, D);
public void actionPerformed(){
//Do stuff to Arrays
}
}
public class Bclass{
Bclass(Array C, Array D){
//This is Constructor...
}
}
静态方法:
public class A implements ActionListener{
public static Array C;
public static Array D;
public void actionPerformed(){
//Do stuff to Arrays
}
}
public class Bclass{
Bclass(){
//This is Constructor...
A.C().getIndexOf("C-stuff");
A.D().getIndexOf("D-stuff");
}
}