生成的 Protobuf 上的 Java 反射但未找到类

Nat*_*n W 2 java reflection protocol-buffers classnotfoundexception

我经常使用protobuf。但是今天,当我尝试在生成的 protobuf 类上使用反射时,我得到了一个 class not found 异常。(我知道这不是一个普通的 protobuf 用例)。该类正被其他方法在同一个文件中使用,并且它的编译和运行没有问题。

import com.foo.protobuf.Foo.Bar;
...
void method1() {
    Bar.Builder bld = Bar.newBuilder();
    ...
}


void method2(String clsName) {
    // clsName = "com.foo.protobuf.Foo.Bar"
    Class clsBar = Class.forName(clsName); // CNF Exception here
}
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题?感谢您提供任何意见。

Nat*_*n W 5

刚刚发现它与protobuf无关。这是关于如何引用内部类。

所有生成的 protobuf 类都是静态内部类。为了使它工作,我必须使用 '$' 而不是 '.' 表示完全限定类名的最后一部分:Class.forName("com.foo.protobuf.Foo$Bar")。

抱歉回答我自己的问题。希望它可以帮助处于相同情况的人。