java - Restrict method to RandomAccess List -
i've method operates on list
, removing duplicates. algorithm efficient on lists implementing randomaccess. prevent misuse , disappointing performance, i'm wondering how enforce randomaccess
restriction. randomaccess
interface not extend list
unfortunately, sort of need make variable 2 types @ once.
i declare method accept arraylist
rather list
, other list types can implement randomaccess
(for example, lists returned collections.synchronizedlist
, collections.checkedlist
), , don't want block those.
i tried generics, couldn't construct working syntax:
public <t> void process(<list<t> extends randomaccess> list) { ... }
i do:
if (!(list instanceof randomaccess)) throw new unsupportedoperationexception("randomaccess list required");
but restriction enforced @ run time, less robust.
help?
you need use multiple bounds, indicated ampersand (&
):
public <t,l extends list<t> & randomaccess> void process(l list)
putting (non-compilable, unless remove second call) class:
public class main { public static void main(string[] argv) throws exception { main x = new main(); x.process(new arraylist<string>()); x.process(new linkedlist<string>()); } public <t,l extends list<t> & randomaccess> void process(l list) { } }
Comments
Post a Comment