Что такое сигнатура типа Java VM для метода, возвращающего универсальный тип класса? - PullRequest
0 голосов
/ 06 июня 2019

Метод

public Set<BluetoothDevice> getBondedDevices ()

от Android.bluetooth.BluetoothAdapter.

Я прочитал руководство по подписи типа здесь , в том числе как указать объект с помощью L класс имя ;но я не знаю, как распространить это на общий класс (или даже если это возможно).

Ответы [ 3 ]

1 голос
/ 07 июня 2019

Если вы не уверены, что является сигнатурой метода, 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;
}
1 голос
/ 06 июня 2019

Общих не существует во время выполнения; AFAIK, этот синтаксис не поддерживает параметры типа.

Я не уверен, относится ли это к параметрам типа для базовых классов (которые существуют во время выполнения в Reflection).

0 голосов
/ 06 июня 2019

Вы спрашиваете о стирании типа в Java. Ваш ответ - Объект. Если у вас есть:

List<E> myList;

Компилятор интерпретирует E как Object. Этот случай известен как стирание типа класса. Существует также случай, называемый стиранием типа метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...