Okay say I have a class:
public class ExampleClass() {
public void exampleClassMethod(ArrayList abcdefg> arrList) {
....
Use List<Object>
to accept any List object in the method.
public void exampleClassMethod2(List<Object> custClassArg) {
....
}
use List instead of ArrayList as it give more flexibility.
Also you can use List<? extends CustomClass>
if all the other customClasses extends from a base type.
For the second part
1)tester(Object s)
method will accept all Types of Object because any Object in Java internally inherits from java.lang.Object. So tester((Object) abc);
not required at all.
2)Typecast abc to CustomClass1 using CustomClass1 custom = (CustomClass1)abc
. I hope it works.
3)You can use instanceOf
operator but I guess this is lot of overhead for the developer & makes the code unreadable. Use it only if required.
Any ArrayList
:
public void example( ArrayList<?> arr ) { ...
Any type of CustomClass
:
public void example( ArrayList< ? extends CustomClass> arr ) { ...
Edit: For the second half of your question, you can create a new object of any type with reflection:
public void tester( Object obj ) {
Object obj2 = obj.getClass().newInstance();
}
This requires that the class of Object
has a zero-argument constructor. I don't know why you'd want to do this however. You might want to implement clone()
instead, or you might want to think a little more about your real goal at the end of all this is. Usually adding a polymorphic method to CustomClass
solves these "what class do I have" type questions.