Skip to content

Commit 4ce7d94

Browse files
committed
relax type-constraint on LearnerConstructor
It seems that Java cannot easily convert method references to the interface which sometimes requires boilerplate code. Since the type is constrained by the call-site (e.g. learners) anyway, just drop it.
1 parent f446e09 commit 4ce7d94

3 files changed

Lines changed: 6 additions & 14 deletions

File tree

algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/OptimizationsTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
import java.util.Arrays;
1919

20-
import de.learnlib.algorithm.LearnerConstructor;
21-
import de.learnlib.algorithm.procedural.SymbolWrapper;
2220
import de.learnlib.algorithm.procedural.adapter.dfa.TTTAdapterDFA;
2321
import de.learnlib.algorithm.procedural.sba.manager.OptimizingATManager;
2422
import de.learnlib.oracle.equivalence.EQOracleChain;
@@ -55,9 +53,7 @@ public void testOptimizations() {
5553
final SimulatorEQOracle<Character> eqo2 = new SimulatorEQOracle<>(sba);
5654
final EQOracleChain<SBA<?, Character>, Character, Boolean> eqo = new EQOracleChain<>(Arrays.asList(eqo1, eqo2));
5755

58-
final LearnerConstructor<TTTAdapterDFA<SymbolWrapper<Character>>, SymbolWrapper<Character>, Boolean> cons =
59-
TTTAdapterDFA::new;
60-
final SBALearner<Character, ?> learner = new SBALearner<>(alphabet, mqo, cons);
56+
final SBALearner<Character, ?> learner = new SBALearner<>(alphabet, mqo, TTTAdapterDFA::new);
6157

6258
final Experiment<SBA<?, Character>> experiment = new Experiment<>(learner, eqo, alphabet);
6359

algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/OptimizationsTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
import java.util.Arrays;
1919

20-
import de.learnlib.algorithm.LearnerConstructor;
21-
import de.learnlib.algorithm.procedural.SymbolWrapper;
2220
import de.learnlib.algorithm.procedural.adapter.mealy.TTTAdapterMealy;
2321
import de.learnlib.algorithm.procedural.spmm.manager.OptimizingATManager;
2422
import de.learnlib.oracle.equivalence.EQOracleChain;
@@ -56,10 +54,8 @@ public void testOptimizations() {
5654
final EQOracleChain<SPMM<?, Character, ?, Character>, Character, Word<Character>> eqo =
5755
new EQOracleChain<>(Arrays.asList(eqo1, eqo2));
5856

59-
final LearnerConstructor<TTTAdapterMealy<SymbolWrapper<Character>, Character>, SymbolWrapper<Character>, Word<Character>>
60-
cons = TTTAdapterMealy::new;
61-
final SPMMLearner<Character, Character, TTTAdapterMealy<SymbolWrapper<Character>, Character>> learner =
62-
new SPMMLearner<>(alphabet, spmm.getErrorOutput(), mqo, cons);
57+
final SPMMLearner<Character, Character, ?> learner =
58+
new SPMMLearner<>(alphabet, spmm.getErrorOutput(), mqo, TTTAdapterMealy::new);
6359

6460
final Experiment<SPMM<?, Character, ?, Character>> experiment = new Experiment<>(learner, eqo, alphabet);
6561

api/src/main/java/de/learnlib/algorithm/LearnerConstructor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import net.automatalib.alphabet.Alphabet;
2020

2121
/**
22-
* A simplified view on the constructor of a {@link LearningAlgorithm}, that only requires an {@link Alphabet}
23-
* definition and a {@link MembershipOracle}.
22+
* A simplified view on the constructor of a learning algorithm that only requires an {@link Alphabet} definition and a
23+
* {@link MembershipOracle}.
2424
*
2525
* @param <L>
2626
* learner type
@@ -29,7 +29,7 @@
2929
* @param <D>
3030
* output domain type
3131
*/
32-
public interface LearnerConstructor<L extends LearningAlgorithm<?, I, D>, I, D> {
32+
public interface LearnerConstructor<L, I, D> {
3333

3434
/**
3535
* Construct the learner instance.

0 commit comments

Comments
 (0)