0

I'm kind of new to Android and I have to make a Bluetooth connection between two PCBs. I saw a line of code in API guides and I still haven't figure out what it means. I wonder if someone can help me.

Here's that code:

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();

What I can't understand is Set<BluetoothDevice>!

Why does they put something between "< >". I've also seen than in ArrayAdapter<String>. What these elements do?

4

1 回答 1

3

这使得Set通用。当您声明这一点时:

Set<BluetoothDevice> pairedDevices

意味着Set对象应该只包含类型的对象BluetoothDevice。通常建议使用泛型集合,因为您可以获得类型安全的直接好处。

Java 集合框架旨在处理任何类型的对象。在Java 1.4和更早的版本中,它们用作java.lang.Object添加到集合中的任何对象的类型。使用对象时必须将对象显式转换为所需的类型,否则会出现编译时错误。

Java 5中引入的 Java 泛型提供了更强的类型安全性。泛型允许将类型作为参数传递给类、接口和方法声明。例如:

Set<BluetoothDevice> pairedDevices

<BluetoothDevice>这个例子中是一个类型参数。使用类型参数,编译器确保我们仅将集合与兼容类型的对象一起使用。另一个好处是我们不需要转换从集合中获得的对象。现在在编译时检测到对象类型错误,而不是在运行时抛出转换异常。

推荐阅读:

  1. Oracle 的泛型教程
  2. 在 J2SE 5.0 中使用和编程泛型
  3. Java 中的泛型 - Wiki
  4. Java 理论与实践:泛型陷阱
  5. Java 泛型常见问题解答
  6. 协变和逆变
于 2013-07-27T12:07:26.050 回答