Sorry for the length...
Personally, I think it's absolutely ridiculous for this rule to be in place (for basketball) with their reasoning for it. The rule was proposed implemented for "maturity/educational" reasons...However, how much maturity is to be gained in that year from 18 to 19? Sure, it may help teams in the NBA to evaluate a player's skill set against better competition, but if teams aren't willing to take the risk, they shouldn't take a high school player in the draft. Nobody has ever said that teams HAVE TO take a player straight out of high school, but to claim that it's in place for the best interest of the athlete is flat out dishonest. Also, the claim that the NCAA or NBA truly care about athletes getting their education, as it relates to basketball, is equally absurd. Potential lottery pick freshmen don't really even attend classes their 2nd semester due to the tournament and prep for the combine, therefore, what's the point really...Exploitation by the NCAA and a sense of "security" as it relates to NBA front offices.
I personally believe that the system should be that a high school player should be:
If undrafted: Be able to then sign with the college of their choice, but not be able to declare again until after their 3rd season of college ball (Should allow for most players to be near a degree) or take a chance and sign somewhere overseas, whereby they'll be eligible for the following year's draft.
If drafted: Either sign right then or (in the case that the draft position is not of their liking), that the team who drafted them still own the rights to that player upon their 3yr stint in college. At that time, teams can trade for the rights of that player for appropriate compensation.
Roster sizes in the NBA don't allow for a MLB like draft, but players that drafted out of high school aren't eligible for the draft until after their RS So./Jr. season...