0

私は Java プログラマーではありませんが、C++、Scala、Python の OOP について非常によく知っているので、抽象的な説明は理解できます。

次のようなJavaコードで作業しています:

public class my_class implements ObjectReader<double[][]>, ObjectWriter<double[][]> {
    private static final my_class instance = new my_class();
    private my_class() {};
    public static my_class getInstance(){
        return instance
    }
    public double[][] functionName{String argument) {
        // this is the function I want to use, but it is giving me some errors.
    }
... MORE CODE AND BRACKETS AND SYNTACTICALLY CORRECT STUFF ...

ObjectReader と ObjectWriter は、このライブラリで次のように定義されています。

public interface ObjectReader<T>{
    T functionName(String argument);
}

次に、jython 2.7でこのコードを使用したい(適切なインポートが行われ、何をすべきか)

my_class_instance  = path.to.package.my_class()
data_i_want = my_class_instance.functionName("A String")

そして、エラーがあります

TypeError: No visible constructors for class path.to.package.my_class)

a) Java では、クラス本体でコンストラクターを指定すると、オーバーライドされたコンストラクターだと思います。「プリンシパル」コンストラクターは次のように指定されます。

public class my_class(type1 arg1, type2 arg 2, ...){
...
}

my_class はコンストラクターへの引数を必要としますか?

b) 次のように、jython コードから括弧を削除しようとしました。

my_class_instance  = path.to.package.my_class // No more () here!
data_i_want = my_class_instance = my_class_instance.functionName("A String")    

そしてエラーを取得します:

TypeError: functionName() expected 2 args; got 1

この 2 つの問題についてオンラインで多くの投稿を目にしますが、このなぞなぞの答えを頭のてっぺんから知っている人がいれば、時間を大幅に節約できます。午前2時だ、寝たい!

4

1 に答える 1

0

の目に見えるコンストラクタがないため、これはエラーを生成しますmy_class:

my_class_instance = path.to.package.my_class()

インスタンスではなくクラスへの参照を提供するため、これは機能しません。

my_class_instance = path.to.package.my_class

しかし、 というファクトリ メソッドがありますgetInstance()。それを使用してインスタンスを取得します。

my_class_instance = path.to.package.my_class.getInstance()
于 2016-07-29T10:13:40.110 に答える