Интерфейсы требуют, чтобы подпись метода соответствовала сигнатуре контракта точно .
Вот более простой пример, который также не будет компилироваться:
interface IFoo
{
Object GetFoo();
}
class Foo : IFoo
{
public String GetFoo() { return ""; }
}
Теперь о том, что с этим делать, я бы позволил интерфейсу диктовать реализацию. Если вы хотите, чтобы контракт был IEnumerable<T>
, то это то, что должно быть в классе. Интерфейс является самым важным здесь, так как реализация свободна настолько гибкой, насколько это необходимо.
Просто убедитесь, что IEnumerable<T>
- лучший выбор здесь. (Это очень субъективно, поскольку я мало знаю о вашем домене или цели этих типов в вашем приложении. Удачи!) [/ G4]
То, что вы хотите сделать, это ByteStreams.copy(input, Funnels.asOutputStream(hasher))
, где hasher
получается, например, из. Hashing.sha256().newHasher()
. Затем позвоните hasher.hash()
, чтобы получить результат HashCode
.