import java.util.Date ;
public class Main {
static class Comment { }
static class User { }
interface SortBy< T, M> { }
static class CommentSortBy< M> implements SortBy< Comment, M> {
static final CommentSortBy< Date> CREATION = new CommentSortBy< Date> ( ) ;
static final CommentSortBy< Integer> VOTES = new CommentSortBy< Integer> ( ) ;
}
static class UserSortBy< M> implements SortBy< User, M> {
static final UserSortBy< String> NAME = new UserSortBy< String> ( ) ;
}
static class Query< T> {
public < S extends SortBy< T, M> , M> void setSort( S sortBy, M min) {
//Set relevant values
}
}
public static void main
( String [ ] args
) {
new Query
< Comment
> ( ) .
setSort ( CommentSortBy.
CREATION ,
new Date ( ) ) ; new Query< Comment> ( ) .setSort ( UserSortBy.NAME , "Joe" ) ; //compiler error
}
}
aW1wb3J0IGphdmEudXRpbC5EYXRlOwogCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIAogICAgc3RhdGljIGNsYXNzIENvbW1lbnQgeyB9CiAgICAKICAgIHN0YXRpYyBjbGFzcyBVc2VyIHsgfQogICAgCiAgICBpbnRlcmZhY2UgU29ydEJ5PFQsIE0+IHsgfQogICAgCiAgICBzdGF0aWMgY2xhc3MgQ29tbWVudFNvcnRCeTxNPiBpbXBsZW1lbnRzIFNvcnRCeTxDb21tZW50LCBNPiB7CiAgICAKICAgICAgICBzdGF0aWMgZmluYWwgQ29tbWVudFNvcnRCeTxEYXRlPiBDUkVBVElPTiA9IG5ldyBDb21tZW50U29ydEJ5PERhdGU+KCk7CiAgICAgICAgc3RhdGljIGZpbmFsIENvbW1lbnRTb3J0Qnk8SW50ZWdlcj4gVk9URVMgPSBuZXcgQ29tbWVudFNvcnRCeTxJbnRlZ2VyPigpOwogICAgfQogICAgCiAgICBzdGF0aWMgY2xhc3MgVXNlclNvcnRCeTxNPiBpbXBsZW1lbnRzIFNvcnRCeTxVc2VyLCBNPiB7CiAgICAKICAgICAgICBzdGF0aWMgZmluYWwgVXNlclNvcnRCeTxTdHJpbmc+IE5BTUUgPSBuZXcgVXNlclNvcnRCeTxTdHJpbmc+KCk7CiAgICB9CiAgICAKICAgIHN0YXRpYyBjbGFzcyBRdWVyeTxUPiB7CiAgICAKICAgICAgICBwdWJsaWMgPFMgZXh0ZW5kcyBTb3J0Qnk8VCwgTT4sIE0+IHZvaWQgc2V0U29ydChTIHNvcnRCeSwgTSBtaW4pIHsKICAgICAgICAgICAgLy9TZXQgcmVsZXZhbnQgdmFsdWVzCiAgICAgICAgfQogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAKICAgICAgICBuZXcgUXVlcnk8Q29tbWVudD4oKS5zZXRTb3J0KENvbW1lbnRTb3J0QnkuQ1JFQVRJT04sIG5ldyBEYXRlKCkpOwogICAgICAgIG5ldyBRdWVyeTxDb21tZW50PigpLnNldFNvcnQoVXNlclNvcnRCeS5OQU1FLCAiSm9lIik7IC8vY29tcGlsZXIgZXJyb3IKICAgIH0KfQ==
compilation info
Main.java:32: error: method setSort in class Query<T> cannot be applied to given types;
new Query<Comment>().setSort(UserSortBy.NAME, "Joe"); //compiler error
^
required: S,M
found: UserSortBy<String>,String
reason: inferred type does not conform to declared bound(s)
inferred: UserSortBy<String>
bound(s): SortBy<Comment,String>
where S,M,T are type-variables:
S extends SortBy<Comment,M> declared in method <S,M>setSort(S,M)
M extends Object declared in method <S,M>setSort(S,M)
T extends Object declared in class Query
1 error
stdout