Когда вы создаете список ArrayList без указания типа объекта, создается ли он автоматически при добавлении первого объекта?

Swift 3:

let layoutManager:NSLayoutManager = textView.layoutManager
let numberOfGlyphs = layoutManager.numberOfGlyphs
var numberOfLines = 0
var index = 0
var lineRange:NSRange = NSRange()

while (index < numberOfGlyphs) {
    layoutManager.lineFragmentRect(forGlyphAt: index, effectiveRange: &lineRange)
    index = NSMaxRange(lineRange);
    numberOfLines = numberOfLines + 1
}

print(numberOfLines)
22
задан bernie 14 October 2010 в 18:59
поделиться

2 ответа

Нет. Дженерики предназначены только для компиляции. Вы просто теряете выгоду от этого чека. Во время выполнения вся общая информация стирается

Другими словами,

ArrayList<Type> 

во время выполнения - это просто ArrayList. Преимущество этого перед списком состоит в том, что когда вы пишете свой код, компилятор проверяет, что вы не помещаете в свой список ничего неуместного.

38
ответ дан 29 November 2019 в 03:51
поделиться

Реальный тип действительно ArrayList. Тип ArrayList<ClassName> существует только для компилятора (это называется стиранием), и его целью является обеспечение безопасности типов на уровне компилятора. Но на уровне байт-кода вы не обладаете знаниями об общих типах.

8
ответ дан 29 November 2019 в 03:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: