Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 1.44 KB

upper-type-bounds.md

File metadata and controls

49 lines (37 loc) · 1.44 KB
layout title partof num language next-page previous-page
tour
Górne ograniczenia typów
scala-tour
21
pl
lower-type-bounds
variances

W Scali parametry typów oraz typy abstrakcyjne mogą być warunkowane przez ograniczenia typów. Tego rodzaju ograniczenia pomagają określić konkretne wartości zmiennych typu oraz odkryć więcej informacji na temat elementów tych typów. Ograniczenie górne typu T <: A zakładają, że zmienna T jest podtypem typu A.

Poniższy przykład demonstruje zastosowanie ograniczeń górnych typu dla parametru typu klasy Cage:

abstract class Animal {
 def name: String
}

abstract class Pet extends Animal {}

class Cat extends Pet {
  override def name: String = "Cat"
}

class Dog extends Pet {
  override def name: String = "Dog"
}

class Lion extends Animal {
  override def name: String = "Lion"
}

class Cage[P <: Pet](p: P) {
  def pet: P = p
}

object Main extends App {
  var dogCage = new Cage[Dog](new Dog)
  var catCage = new Cage[Cat](new Cat)
  /* Nie można włożyć Lion do Cage, jako że Lion nie jest typu Pet. */
//  var lionCage = new Cage[Lion](new Lion)
}

Instancja klasy Cage może zawierać Animal z górnym ograniczeniem Pet. Obiekt typu Lion nie należy do klasy Pet, zatem nie może być włożony do obiektu Cage.

Zastosowanie dolnych ograniczeń typów jest opisane tutaj.