69 lines
1.8 KiB
Plaintext
69 lines
1.8 KiB
Plaintext
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
|
|
|
|
----
|
|
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
|
|
|
|
----
|
|
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)
|
|
|
|
include::message.adoc[]
|
|
|
|
include::highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|