【问题标题】:What does Set<element> mean?Set<element> 是什么意思?
【发布时间】:2013-07-27 12:05:45
【问题描述】:

我对 Android 有点陌生,我必须在两个 PCB 之间建立蓝牙连接。我在 API 指南中看到了一行代码,但我仍然没有弄清楚它是什么意思。我想知道是否有人可以帮助我。

代码如下:

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

看不懂的是Set&lt;BluetoothDevice&gt;

他们为什么要在"&lt; &gt;" 之间添加一些东西。我也见过ArrayAdapter&lt;String&gt;。这些元素有什么作用?

【问题讨论】:

    标签: java android tags set android-arrayadapter


    【解决方案1】:

    这使得Set 成为Generic 集合。当你声明这个时:

    Set<BluetoothDevice> pairedDevices
    

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

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

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

    Set<BluetoothDevice> pairedDevices
    

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

    推荐阅读:

    1. Oracle's tutorial on Generics
    2. Using and Programming Generics in J2SE 5.0
    3. Generics in Java - Wiki
    4. Java theory and practice: Generics gotchas
    5. Java Generics FAQs
    6. Covariance and contravariance

    【讨论】:

    • “Set”到底是做什么的?我在 Android 参考文献中只找到了一行解释。这对我来说还不够。
    • 阅读documentation。这是一个不包含重复元素的Collection
    猜你喜欢
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多