Actor Josh Hartnett has revealed he turned down the roles of Superman, Spider-Man and Batman because he didn't want to be "defined" by the iconic superheroes for the rest of his career.

The 35 year old has spent the past few years starring in independent films and mainstream movies, a far cry from his past blockbusters such as Pearl Harbor and Black Hawk Down.

In an interview with Details magazine, Harnett reveals he had the opportunity to keep his hit movie streak going, but opted to turn down offers to play some of film's most recognisable characters, including the title role in embattled director Bryan Singer's Superman Returns.

He explains, "Spider-Man was something we talked about. Batman was another one. But I somehow knew those roles had potential to define me, and I didn't want that. I didn't want to be labelled as Superman for the rest of my career. I was maybe 22, but I saw the danger."

After he turned down those offers, Hartnett admits his decision caused a rift between his manager and agents: "It got to the point where none of us were able to work together."

However, years later he has changed his tune about taking blockbuster-worthy parts, divulging that if he were approached to don a superhero mask today, he would consider it.

He says, "I'd say, 'Let's talk about how it would be done, see if we can get on the same page.' Compromise doesn't scare me anymore."