ClassCastException: [LResultImpl; incompatible with IResult



ClassCastException: [LResultImpl; incompatible with IResult

During unit test, the application throws exception that looks like: ClassCastException: [LResultImpl; incompatible with IResult.

At first, I am really curious, ResultImpl implements the interface IResult, why it can't cast ResultImpl object to IResult.

At last, we figured out that the [L means an array. it can not convert the array of ResultImpl to IResult.

This makes sense.

To verify:
public class ClassCast
{
    public static void main(String[] args)
    {
        // ResultImpl elment1 = new ResultImpl();
        IResult[] impl2 = new ResultImpl[] { new ResultImpl() };
        Object o = impl2;
        IResult result = (IResult) o;
    }
}

interface IResult
{
}

class ResultImpl implements IResult
{
}

Result:
Exception in thread "main" java.lang.ClassCastException: [LResultImpl; incompatible with IResult
    at ClassCast.main(ClassCast.java:10)

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)