§2.3.4.(c) Actual ambiguity
At runtime actual ambiguity may occur if for the
dynamic type of a base to be lifted the conditions of (b)
above hold accordingly. Actual ambiguity is only possible in cases
reported by the compiler as potential ambiguity.
Effect:
An actual ambiguity is reported at runtime by throwing a
org.objectteams.LiftingFailedException
.
Example code (Actual Ambiguity):
1 |
team class MyTeam { |
2 |
public class SuperRole playedBy MyBase {...} |
3 |
public class SubRoleA extends SuperRole playedBy SubBase {...} |
4 |
public class SubRoleB extends SuperRole playedBy SubBase {...} |
5 |
|
6 |
public void useSuperRole(MyBase as SuperRole r) {...} |
7 |
} |
8 |
|
9 |
MyTeam mt = new MyTeam(); |
10 |
mt.useSuperRole(new SubBase()); |