Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialSam Millington
7,537 PointsOops! It looks like Task 1 is not running. Why is this message appearing on task 2?
Trying to solve task 2, and when I click 'check work' it tells me that task 1 has stopped working. When I go back to task 1 and check whether it works, it works straight away.
I've attached my code.
Thanks, Sam
import com.example.BlogPost;
public class TypeCastChecker {
/***************
I have provided 2 hints for this challenge.
Change `false` to `true` in one line below, then click the "Check work" button to see the hint.
NOTE: You must set all the hints to false to complete the exercise.
****************/
public static boolean HINT_1_ENABLED = false;
public static boolean HINT_2_ENABLED = true;
public static String getTitleFromObject(Object obj) {
String result = "";
// Fix this result variable to be the correct string.
if (obj instanceof com.example.BlogPost) {
BlogPost post = (BlogPost)obj;
result = post.getTitle();
return result;
}
return result;
}
}
2 Answers
Steve Hunter
57,712 PointsHi Sam,
I can't see Task 1 code in there? That should test if obj
is instanceof
String
and return it cast as a String
by assigning it into the result
variable. The result
variable is initialised to a null string before we use it and is returned at the end. You need to leave Task 1 code there for the second part of the challenge.
Task 2 requires you to do a similar thing, i.e. set the result
variable after testing if obj
is an instanceof
a BlogPost
. The slight difference is you need to call a method, getTitle()
on it before assigning into result
, otherwise it wouldn't 'fit' as obj
is a BlogPost
not a String
- the getTitle()
method returns a String
. So, do the instanceof
test then inside the if
cast obj
to BlogPost
then surround all that in brackets and chain, using dot notation, the getTitle()
method on to it. Assign that into result
.
At the end of the method, result
gets returned, whatever value it holds.
That all looks like:
public static String getTitleFromObject(Object obj) {
String result = "";
if (obj instanceof String){
result = (String) obj;
}
if (obj instanceof BlogPost){
result = ((BlogPost) obj).getTitle();
}
return result;
}
I hope that makes sense.
Steve.
Sam Millington
7,537 PointsHi Steve,
Yes, this was the answer. I removed the code from task 1 and replaced it with the code for task 2. So I had nothing to handle passing Strings into the method.
Thanks,
Sam
Steve Hunter
57,712 PointsGlad you got it fixed.