我正在尝试使用泛型实现链接集合,如下所示.
public class A<E> {
private class B {
private B[] b;
private E item;
private B() {
this.b = new B[2];
}
} // end inner class B
} // end class A
Run Code Online (Sandbox Code Playgroud)
A是集合,B是集合中的元素或节点,具有引用后继者/前任者和项目的数组.
不允许创建数组.我得到的错误是generic array creation.我是否正确地认为它实际创造的是一系列的A<E>.B?
如果没有,导致错误的原因是什么?
如果是这样,我怎么能解决这个问题呢?
我显然省略了大量代码,如果我提供的内容不够,请告诉我.任何意见,将不胜感激.谢谢.
编辑1:我应该提到的是,参数化类型必须是在同A在B.因此,通过<E>对内部类是不可能的,因为它创造E#2和叶A用E#1.
我正在尝试访问macOS(2017 iMac)上的蓝牙外围设备,但是CBCentralManager似乎从未进入该.poweredOn状态。
import Cocoa
import CoreBluetooth
class BluetoothManager: NSObject {
var centralManager: CBCentralManager!
override init() {
super.init()
self.centralManager = CBCentralManager(delegate: self, queue:nil)
self.checkState()
}
func checkState() {
print("central state: \(self.centralManager?.state.rawValue ?? -1)")
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(2), execute: {
self.checkState()
})
}
}
extension BluetoothManager: CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case .poweredOn:
print("Power on")
case .unsupported:
print("Unsupported")
default:break
}
}
}
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var bluetoothManager: BluetoothManager?
func applicationDidFinishLaunching(_ …Run Code Online (Sandbox Code Playgroud)