84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
人生最曼妙的风景,竟是内心的淡定与从容!
刚好碰到同样的问题。1和2方法不知道你是怎么做到可以正确的使用的,最简单的办法也要
asInstanceOf[ManagedChannelBuilder[_]]
实际上
public static ManagedChannelBuilder<?> forTarget(String target) { return ManagedChannelProvider.provider().builderForTarget(target); }
返回的是ManagedChannelBuilder[Any]。实际上这里不应该是Any。而是一个
T extends ManagedChannelBuilder<T>
然后nameResolverFactory又把这个T返回了,作为Any。那么就变成调用Any的build方法了,显然这样过不了编译。
希望有更好的方法~
===================================================更新一下
简化一下问题:
class A[T <: A[T]] { def retA: A[_] = ??? def retT: T = ??? } class B extends A[B] (new B).retA.retT
这是原先的定义,如果把改成这样def retA: A[_ <: A[_]] = ???def retA: A[_ <: A[_]] = ???应该就没问题了。
def retA: A[_ <: A[_]] = ???
因此,可以这样
(new B).retA.asInstanceOf[A[_ <: A[_]]].retT.retT....
同理,返回ManagedChannelBuilder<?>的时候就.asInstanceOf[ManagedChannelBuilder[_ <: ManagedChannelBuilder[_]]]应该就没问题了。
ManagedChannelBuilder<?>
.asInstanceOf[ManagedChannelBuilder[_ <: ManagedChannelBuilder[_]]]
刚好碰到同样的问题。
1和2方法不知道你是怎么做到可以正确的使用的,最简单的办法也要
实际上
返回的是ManagedChannelBuilder[Any]。实际上这里不应该是Any。而是一个
然后nameResolverFactory又把这个T返回了,作为Any。
那么就变成调用Any的build方法了,显然这样过不了编译。
希望有更好的方法~
===================================================
更新一下
简化一下问题:
这是原先的定义,如果把改成这样
def retA: A[_ <: A[_]] = ???
def retA: A[_ <: A[_]] = ???
应该就没问题了。
因此,可以这样
同理,返回
🎜因此,可以这样🎜 rrreee 🎜同理,返回ManagedChannelBuilder<?>
的时候就.asInstanceOf[ManagedChannelBuilder[_ <: ManagedChannelBuilder[_]]]
应该就没问题了。ManagedChannelBuilder<?>
的时候就🎜.asInstanceOf[ManagedChannelBuilder[_ <: ManagedChannelBuilder[_]]]
🎜