5

私はこれを見ています:

public static <T,U extends T> AutoBean<T> getAutoBean(U delegate)

入力クラスは U 型で、AutoBean クラスは T 型であり、U extends T が境界であることはわかっています。しかし、<T,ここでどういう意味ですか?

また、getAutoBean の出力を受け取る関数を書くとしたら、どのように関数宣言を書きますか? (つまり、myFunction(getAutoBean(...))、myFunction() の関数宣言はどうなる?)

ありがとうございました!

4

5 に答える 5

4

メソッドが扱う型を宣言するだけです。つまり、基本的には、ジェネリック型名を最初に宣言してから、シグネチャで使用する必要があります。<Tそれ自体では何も意味しませんが、角括弧内の文字は「メソッドで使用する型は次のとおりです」という意味です。

の出力を操作する「myFunction()」については、次のgetAutoBean(...)とおり です。

public static  <T> String myFunction(AutoBean<T> arg){ // If you return a generic type object, you will also have to declare it's type parameter in the first angular brackets and in angular brackets after it.
    // do work here
}

于 2013-03-19T03:38:52.443 に答える
4

<T>メソッドによって返される AutoBean の型です。また、入力パラメーターの型は、メソッドを呼び出すために<U>型を拡張する必要があることに注意してください。<T>

于 2013-03-19T03:41:37.410 に答える
4

<T,U extends T>静的メソッドの型パラメーターを宣言しています。Tこのメソッドには、 typeと、最初の型Uを拡張する 2 番目の型の 2 つの型パラメーターがあります。

次のように型パラメーターのバインドを明示的に指定すると、これらは異なる場合があります。

AutoBean<Object> autoBean = Foo.<Object, String>getAutoBean("delegate");

getAutoBeanclass のメンバーであると仮定しFooます。

于 2013-03-19T03:42:40.340 に答える
2

これは、型が型Uを拡張する必要があることを意味しTます。たとえば、これらの型はTおよびの代わりに使用できますU

class TType { }
class UType extends TType { }

どういう<T,意味かというと、関数内で使用するジェネリック型を宣言しています。使用例は次のとおりです。

UType uType = new UType();
AutoBean<TType> autobean = getAutoBean(uType);
于 2013-03-19T03:40:50.507 に答える
2

lbolit が言ったように、メソッドが処理するものを宣言します。つまり、この場合、T の戻り値の型と、T のサブクラスである U のパラメーターを宣言します。

于 2013-03-19T03:42:28.497 に答える