== Why is this an issue? When directly subclassing ``++java.io.InputStream++`` or ``++java.io.FilterInputStream++``, the only requirement is that you implement the method ``++read()++``. However most uses for such streams don't read a single byte at a time and the default implementation for ``++read(byte[],int,int)++`` will call ``++read(int)++`` for every single byte in the array which can create a lot of overhead and is utterly inefficient. It is therefore strongly recommended that subclasses provide an efficient implementation of ``++read(byte[],int,int)++``. This rule raises an issue when a direct subclass of ``++java.io.InputStream++`` or ``++java.io.FilterInputStream++`` doesn't provide an override of ``++read(byte[],int,int)++``. === Noncompliant code example [source,java] ---- public class MyInputStream extends java.io.InputStream { private FileInputStream fin; public MyInputStream(File file) throws IOException { fin = new FileInputStream(file); } @Override public int read() throws IOException { return fin.read(); } } ---- === Compliant solution [source,java] ---- public class MyInputStream extends java.io.InputStream { private FileInputStream fin; public MyInputStream(File file) throws IOException { fin = new FileInputStream(file); } @Override public int read() throws IOException { return fin.read(); } @Override public int read(byte[] b, int off, int len) throws IOException { return fin.read(b, off, len); } } ---- === Exceptions This rule doesn't raise an issue when the class is declared ``++abstract++``. ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message * Provide an override of "read(byte[],int,int)" for this class. === Highlighting Class name declaration ''' == Comments And Links (visible only on this page) === relates to: S4349 endif::env-github,rspecator-view[]