という名前のクラスがありStatisticFrame
ます。stats
このクラスは、メソッド内に名前が付けられたオブジェクトを作成します。StatisticFrame
クラスから作成されたこのオブジェクトを別のクラスに渡すにはどうすればよいですか?
7 に答える
StatisticFrameクラスにレシーバーオブジェクト(たとえば、TargetFrameクラスタイプ)を指す変数を保持してから、レシーバーオブジェクトで定義されたメソッド(たとえば、SetStatsObject(object obj))を呼び出してオブジェクトを受け取ります。
StaticFrameクラスは次のようになります
class StatisticFrame {
private TargetFrame targetObject = null;
public StatisticFrame (TargetFrame obj) {
this.targetObject = obj;
}
public void Send (Object stats) {
object stats = GetStatsObject(); // this will create and returns stats object
targetObject.SetStatsObject(stats);
}
//...
}
TargetFrame(受信オブジェクトのクラス)は次のようになります。
class TargetFrame {
public void SetStatsObject(Object stats) {
// Do what ever you want with stats
}
// .....rest of the methods follows
}
作成したオブジェクトを引数として別のクラスコンストラクターまたはそのメソッドに渡すことができます。
class Apples{
public static void main(String[] args){
ApplesTestDrive obj = new ApplesTestDrive();
ApplesSampleTestDrive objOne = new ApplesSampleTestDrive();
// Pass created object obj as argument to ApplesSampleTestDrive method.
objOne.paint(obj);
}
}
class ApplesTestDrive{
public String bucket;
public ApplesTestDrive(){
bucket = "blue";
}
}
class ApplesSampleTestDrive{
public void paint(ApplesTestDrive obj){
System.out.println("Paint apple one: " + obj.bucket);
}
}
Another class
argument
オブジェクトを期待stats
し、クラスからそのメソッドを呼び出して統計オブジェクトを渡すメソッドが必要です
private void yourmethod(){
Stats stas =
AnotherClass ac = new AnotherClass();
ac.thatMethod(stats);
}
class AnotherClass {
public void thatMethod(Stats stats){
}
}
方法の1つは、渡すオブジェクトを引数オブジェクトとして受け入れる「別のクラス」にメソッドを作成し、そのメソッドを基本クラスから呼び出すことです。
class Sender{
public void createAndSend(Reciever reciver){
String s="some data from Producer";
reciver.recieve(s);
}
}
class Reciever{
public void recieve(String data){
System.out.println("I recieved "+data);
}
}
//lets test it
class TestX{
public static void main(String[] args) {
Sender s=new Sender();
Reciever r=new Reciever();
s.createAndSend(r);
}
}
出力:I recieved some data from Producer
これを実現する方法はいくつかあります。メソッドの戻り型をとして作成しstats
、他のクラスでStatisticFrame
そのメソッドのオブジェクトを作成して呼び出すことができます。
StatisticFrame sf=new StatisticFrame();
Stats st=sf.method();
別の方法として、戻り型を作成したくない場合は、型のStats
グローバルprivate
変数を作成Stats
し、これをメソッドに割り当てます。そうすると、1つのpublic
getter
メソッドがこのオブジェクトを他のクラスに返します。
新しく作成したオブジェクトを受け入れるコンストラクターを使用して、オブジェクトを渡す他のクラスのオブジェクトを作成できます。インターフェイスを使用していくつかのコールバック関数を使用できる別の方法
一方通行 :-
1つのクラスXyzがあり、そのオブジェクトのgetterメソッドを作成し、別のクラスAbcでXyzのオブジェクトを作成し、そのオブジェクトを使用してgetterメソッドを呼び出し、その戻り値を現在のクラスに格納するとします。
2番目の方法:-
継承を使用してクラスをスーパーにします
クラスAbcはXyzを拡張しますこれにより、uは、スーパークラスに存在するすべてのオブジェクト、メソッドに直接アクセスします。
これがあなたにとって理にかなっていることを願っています