In your example, the instanceof is unnecessary (unless you wanted to check for null, in which case you should just check for null with ==).
Your method declaration
public void myMethod(ObjectA<Boolean> object)
already enforces that callers can only pass values that are of type ObjectA<Boolean> or assignable to type ObjectA<Boolean>.
In other words, I cannot write code like
ObjectA<Integer> notBoolean = ...;
myMethod(notBoolean);
the compiler will reject it.
Within your method, since the parameter is of type ObjectA<Boolean>, the compiler guarantee is that nothing will get through at runtime that isn't an ObjectA. For example, you won't end up with object holding a reference to a Socket or a NoSuchElementException object.
The exception to all of the above is expressions having a raw type. Don't use raw types. Here's why:
With raw types, a client could potentially write
ObjectA<Integer> notBoolean = ...
ObjectA raw = notBoolean;
myMethod(raw);
and the compiler would forgo the generic type check and allow the invocation (the compiler erases the generic usage in the context of that invocation) .
Your code would presumably then fail at runtime with a ClassCastException when trying something like
public void myMethod(ObjectA<Boolean> object)
{
Boolean ref = object.get(); // ClassCastException
// returns an `Integer` and attempts to assign it to a `Boolean` variable
}
Your object would still hold a reference to a ObjectA instance, but whatever it might wrap will no longer necessarily be a Boolean (I'm assuming ObjectA is some kind of wrapper for a Boolean value here).
This ClassCastException will be more or less equivalent to what you could've thrown anyway.
I wouldn't make a check specifically for this raw usage.