2011-06-07 40 views
0

我与Robolectric工作,并在Robolectric class有一个静态方法:Android的Java静态通用呼叫

public static <P, R> P shadowOf_(R instance) { 
    return (P) ShadowWrangler.getInstance().shadowOf(instance); 
} 

我来自一个很长一段时间,C#泛型的背景,所以我可以思考的这种不正确。我的第一反应是利用这个如此:

Robolectric.shadowOf_<MyShadow>(myInstance).foo(); 

然而,这并不编译(加,对我和我的C#泛型的背景,它不看的权利)。

我该如何使用这种方法?

Source of the method is located here.

+0

你能提供编译错误吗? – WarrenFaith 2011-06-07 22:12:38

+0

什么是编译器消息? – 2011-06-07 22:13:12

+0

“不是一个声明” – 2011-06-07 22:15:10

回答

2

我相信你需要:

Robolectric.<MyShadow,X>shadowOf_(myInstance).foo(); 

其中X是什么的myInstance的类型。

0

编译器无法推断出P是什么。假设P应该在这里,你可以

A a = Robolectric.shadowOf_(myInstance); // compiler can infer P=A here 
a.foo();