 <p>No, a static method cannot call a non-static method.</p> <p>Consider that you have objects <code>a</code> and <code>b</code>, both instances of <code>Currency</code>. <code>currencyValidator</code> exists on those two objects. Now <code>store()</code> belongs to the class <code>Currency</code> itself, not one of those objects. So, in <code>Currency.store()</code>, how does it know which object to call <code>currencyValidator()</code> on? The simple answer is it doesn't so it can't. This is one of the pitfalls of using static methods and one of the reasons people often urge against them.</p> <p>Regardless, you can get around this by passing <code>a</code> into <code>Currency.store()</code>, and calling <code>a.currencyValidator()</code> instead.</p>