返回通用 class 类型的方法的 Java VM 类型签名是什么?

What is the Java VM type signature for a method returning a generic class type?

方法是

public Set<BluetoothDevice> getBondedDevices ()

来自 Android.bluetooth.BluetoothAdapter。

我阅读了类型签名指南here,包括如何用Lclass-name指定一个对象;但我不知道如何将其扩展到通用 class(或者即使可能)。

泛型在运行时不存在; AFAIK,该语法不支持类型参数。

我不确定这是否适用于基 类 的类型参数(在运行时确实存在于反射中)。

你问的是 java 中的类型擦除。你的答案是对象。如果你有:

List<E> myList;

编译器会将 E 解释为 Object。这种情况称为 Class 类型擦除。还有一种情况叫做方法类型擦除。

如果您不确定方法的签名是什么,javap 可以解决问题。

import java.util.*;
public class Example {
  public Set<Float> getSet() {
    return null;
  }
}

您可以通过以下方式轻松查看签名

> javac Example.java
> javap -s -cp . Example
Compiled from "Example.java"
public class Example {
  public Example();
    descriptor: ()V

  public java.util.Set<java.lang.Float> getSet();
    descriptor: ()Ljava/util/Set;
}