2016-06-20 10 views
-3

私はAPIを設計しました。彼らは多くのパラメータを取っていました。私はparamsをチェックしたいので、と呼ばれるInterfaceを設計しました。この場合、interfaceでgenericを使用するには?

public interface Validator<T> { 
    boolean validat(); 
    default T from(Map<String, String> params) { 
     return JSON.parseObject(JSON.toJSONString(params), T); // can't compile 
    }; 
} 

返品方法が無効です。どうすれば修正できますか?

答えて

1

Tはタイプで、JSON.parseObjectのために必要なものはTypeReferenceではありません。

+0

を試してみてください。私は 'から'を削除します。ここに入れる理由はありません – blackdog

-1

インターフェイスにはメソッドの実装があってはなりません。

+0

Java 8からデフォルトメソッドが許可されています。 –

+0

JFを訂正してくれてありがとう。私はJava 8のこの変更を認識していませんでした。 –

0

どのライブラリを使用していますか?

メソッドのparseObjectの2番目のパラメータが、メソッド呼び出しから返される必要がある「オブジェクトクラス」であるとします。このような場合は、クラス参照をメソッドに渡す必要があります。

はたぶんそれが良いではありません。この

public interface Validator<T> { 
    boolean validat(); 
    default T from(Map<String, String> params, Class<T> destClass) { 
     return JSON.parseObject(JSON.toJSONString(params), destClass); // this compiles 
    }; 
} 
関連する問題