Skip to content

Commit d7dba3a

Browse files
committed
Merge pull request #108 from rkuhn/wip-contravariant-subscriber
allow contravariant use of Subscriber
2 parents 9e62ca4 + dbc5dad commit d7dba3a

File tree

4 files changed

+8
-7
lines changed

4 files changed

+8
-7
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ onError | (onSubscribe onNext* (onError | onComplete)?)
6969

7070
```java
7171
public interface Publisher<T> {
72-
public void subscribe(Subscriber<T> s);
72+
public void subscribe(Subscriber<? super T> s);
7373
}
7474
````
7575

api/src/examples/java/org/reactivestreams/example/multicast/StockPricePublisher.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
public class StockPricePublisher implements Publisher<Stock> {
1818

1919
@Override
20-
public void subscribe(final Subscriber<Stock> s) {
20+
public void subscribe(final Subscriber<? super Stock> s) {
2121
s.onSubscribe(new Subscription() {
2222

2323
AtomicLong capacity = new AtomicLong();
@@ -46,10 +46,10 @@ public void startConsuming() {
4646
}
4747

4848
private static final class EventHandler implements Handler {
49-
private final Subscriber<Stock> s;
49+
private final Subscriber<? super Stock> s;
5050
private final AtomicLong capacity;
5151

52-
private EventHandler(Subscriber<Stock> s, AtomicLong capacity) {
52+
private EventHandler(Subscriber<? super Stock> s, AtomicLong capacity) {
5353
this.s = s;
5454
this.capacity = capacity;
5555
}

api/src/examples/java/org/reactivestreams/example/unicast/InfiniteIncrementNumberPublisher.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.reactivestreams.example.unicast;
22

33
import java.util.concurrent.atomic.AtomicInteger;
4+
import java.util.concurrent.atomic.AtomicLong;
45

56
import org.reactivestreams.Subscription;
67
import org.reactivestreams.Subscriber;
@@ -9,13 +10,13 @@
910
class InfiniteIncrementNumberPublisher implements Publisher<Integer> {
1011

1112
@Override
12-
public void subscribe(final Subscriber<Integer> s) {
13+
public void subscribe(final Subscriber<? super Integer> s) {
1314

1415
final AtomicInteger i = new AtomicInteger();
1516

1617
Subscription subscription = new Subscription() {
1718

18-
AtomicInteger capacity = new AtomicInteger();
19+
AtomicLong capacity = new AtomicLong();
1920

2021
@Override
2122
public void request(long n) {

api/src/main/java/org/reactivestreams/Publisher.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ public interface Publisher<T> {
1616
*
1717
* @param s the {@link Subscriber} that will consume signals from this {@link Publisher}
1818
*/
19-
public void subscribe(Subscriber<T> s);
19+
public void subscribe(Subscriber<? super T> s);
2020
}

0 commit comments

Comments
 (0)