В Java вы можете присвоить значение переменной того же типа или более общего типа.В вашем примере new LinkedList<TreeNode>()
является значением.Поскольку LinkedList
реализует Queue
, он более специфичен, чем Queue
.то есть A LinkedList
является Queue
.
Например, все три из них действительны
Object o = new LinkedList<TreeNode>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
Но вы не можете написать ни одно из этихпотому что это неправильное назначение.
LinkedList<TreeNode> o = new Object();
LinkedList<TreeNode> queue = new Queue<TreeNode>();
PS второй в этом примере также недопустим, потому что Queue является интерфейсом, и вы не можете создать экземпляр (new
) интерфейса, потому что это не конкретныйтип