If you want to call a non-static method (i.e., an instance method) you need an instance of the class. It's as simple as that. So you have two possibilities: a) either make sure you have an instance of the class (this is your option 1), or b) make the method you want to call static. Which one is best in your case depends on your specific code, which you haven't provided.
Creating a subclass does not make a method static and it does not make a non-static method callable without an instance. Anyway, in your code snippet you are not creating any subclass.
A: Create an instance
You can call an instance method only if you have an instance of the class. It may be that it is cumbersome to create an instance because the constructors are very elaborate, but it may be that your instance methods needs this information in order to correctly function.
However, often you do not need to create a new instance every time you need to call the method; you can create a new instance once and use that every time:
class Foo {
Bar instance;
Foo() {
instance = new Bar(/* lots of parameters */);
}
void f() {
// ...
instance.sA2s(input1);
// ...
instance.sA2s(input2);
// ...
}
}
B: Make method static
It can be that your method sA2a doesn't depend on any object, for example because it only accesses static variables (and local variables) and only calls static methods. In that case you can make it static. Static methods can be called from a static context.