最近私はjavaでジェネリックスを学んでいましたが、Pythonプログラマが関連しているとの疑問がありました。私がしたのは、文字列を返し、異なる(またはsimiler)ジェネリック型の2つのパラメータ "p1とp2"を取るジェネリックなJava関数を作成することでした。ジェネリック関数の一般的な操作
def func1(a,b):
if type(a)==str:
return a
else:
return 'bye'
func1(2,5) #output: 'bye'
func1("hi",5) #output: 'hi'
は私が上に同じ試してみました。しかし、トリッキーな事は、私が...このコードのシンプルなPythonの実装はなりp1は、String型、それ以外の一般的な文字列のメッセージであれば、P1の値を返すようにしたいですそう
public static <T, T2> String func3(T obj1, T2 obj2) {
if (obj1.getClass().getSimpleName().equals("String")){
return obj1; //<--error //(String)obj1; <--is working
}
else{
return "bye";
}
}
:文字列に型変換(OBJ1はすでに文字列のタイプであることのためにチェックされているので、むしろ不必要)それは強制的であればJavaの関数が、私の観察によってのみ修正することができ、エラーを与えているようです何がここで間違っていますか?それはPythonの "ducktyping"機能に幾分関係していますか?javaでは可能ではありませんか?または、希望のクラス名を取得するために間違った機能を使用していますか?
しかし、あなたはまだ型キャストが必要です。 – Wietlol
確かに、質問は型比較にもっと関連していると思います。とにかく私は私の解決策を更新します。 – rakwaht