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[_]] = ???
因此,可以這樣
(new B).retA.asInstanceOf[A[_ <: A[_]]].retT.retT....
同理,返回ManagedChannelBuilder>的時候就ManagedChannelBuilder<?>的时候就.asInstanceOf[ManagedChannelBuilder[_ <: ManagedChannelBuilder[_]]].asInstanceOf[ManagedChannelBuilder[_ <: managedchannelbuilder>
ManagedChannelBuilder>
ManagedChannelBuilder<?>
.asInstanceOf[ManagedChannelBuilder[_ <: ManagedChannelBuilder[_]]]
.asInstanceOf[ManagedChannelBuilder[_ <: managedchannelbuilder>
剛好碰到同樣的問題。
1和2方法不知道你是怎麼做到可以正確的使用的,最簡單的辦法也要
其實
回傳的是ManagedChannelBuilder[Any]。實際上這裡不應該是Any。而是一個
然後nameResolverFactory又把這個T回來了,作為Any。
那麼就變成呼叫Any的build方法了,顯然這樣過不了編譯。
希望有更好的方法~
================================================= ==
更新一下
簡化一下問題:
這是原先的定義,如果把改成這樣
def retA: A[_ <: A[_]] = ???
應該就沒問題了。
因此,可以這樣
同理,返回
ManagedChannelBuilder>
的時候就ManagedChannelBuilder<?>
的时候就.asInstanceOf[ManagedChannelBuilder[_ <: ManagedChannelBuilder[_]]]
.asInstanceOf[ManagedChannelBuilder[_ <: managedchannelbuilder>