如何重构超过50000行的Java文件?
我有一个java类,它有超过50000行代码。我想重构它并生成多个小类 我曾尝试过开设儿童课程,但如果我错了,也会有一些挑战来纠正我 a。我们不能用父对象调用子方法 b。此外,我们不能从父对象调用子对象中的方法如何重构超过50000行的Java文件?,java,spring,class,refactoring,Java,Spring,Class,Refactoring,我有一个java类,它有超过50000行代码。我想重构它并生成多个小类 我曾尝试过开设儿童课程,但如果我错了,也会有一些挑战来纠正我 a。我们不能用父对象调用子方法 b。此外,我们不能从父对象调用子对象中的方法 public class Parent { public void a(){ System.out.println("Parent :: a"); b(); //point b } } public class Chi
public class Parent {
public void a(){
System.out.println("Parent :: a");
b(); //point b
}
}
public class Child extends Parent{
public void b(){
System.out.println("Child :: m");
}
}
public class Main {
public static void main(String[] args) {
Parent p = new Parent();
p.b(); //point a
Child c = new Child();
c.a();
}
}
编辑:父类是@ManagedBean类,我正在使用JSF和Spring B点
你可以,它叫。父母可以定义
一个操作的框架,包括许多高级步骤。这些步骤本身由与模板方法位于同一类中的其他辅助方法实现
helper方法可以是抽象方法(需要case子类来提供具体的实现),也可以是钩子方法(在超类中有空的主体)
突出显示的部分是我更喜欢的
public abstract class Parent {
public void a(){
System.out.println("Parent :: a");
b();
}
public abstract void b(); // shouldn't necessarily be public
}
public class Child extends Parent {
@Override
public void b(){
System.out.println("Child :: m");
}
}
A点
你不能,它不是父界面的一部分。要么将该方法添加到父级,要么重新考虑为何在父级引用上调用它。点B
你可以,它叫。父母可以定义
一个操作的框架,包括许多高级步骤。这些步骤本身由与模板方法位于同一类中的其他辅助方法实现
helper方法可以是抽象方法(需要case子类来提供具体的实现),也可以是钩子方法(在超类中有空的主体)
突出显示的部分是我更喜欢的
public abstract class Parent {
public void a(){
System.out.println("Parent :: a");
b();
}
public abstract void b(); // shouldn't necessarily be public
}
public class Child extends Parent {
@Override
public void b(){
System.out.println("Child :: m");
}
}
A点
你不能,它不是父界面的一部分。要么将该方法添加到父级,要么重新考虑为什么在父级引用上调用它。a和B可以通过使用多态性来实现
public class Parent {
public void a(){
System.out.println("Parent :: a");
b(); //point b
}
public void b() {
System.out.println("not in use");
}
}
public class Child extends Parent{
@Override
public void b(){
System.out.println("Child :: m");
}
}
public class Main {
public static void main(String[] args) {
Parent p = new Child();
p.b();
p.a();
}
}
结果:
Child:: m
Parent:: a
Child:: m
A和B可以通过使用多态性来实现
public class Parent {
public void a(){
System.out.println("Parent :: a");
b(); //point b
}
public void b() {
System.out.println("not in use");
}
}
public class Child extends Parent{
@Override
public void b(){
System.out.println("Child :: m");
}
}
public class Main {
public static void main(String[] args) {
Parent p = new Child();
p.b();
p.a();
}
}
结果:
Child:: m
Parent:: a
Child:: m
以上代码是否是您心目中的重构结果?当然,最初的代码不是50K行,它会是什么样子?@LutzHorn当我们不想看到OP的代码时,这是一种罕见的情况@LutzHorn父类是具有50k行的类。我展示的代码是在我们将其划分为子类以及由此产生的挑战之后。如果它有帮助,我们可以用很多方法来考虑父类,并提出一个解决方案。上面的代码是否已经读取了重构的结果?当然,最初的代码不是50K行,它会是什么样子?@LutzHorn当我们不想看到OP的代码时,这是一种罕见的情况@LutzHorn父类是具有50k行的类。我展示的代码是在我们将其划分为子类以及由此产生的挑战之后。如果它有帮助,我们可以用很多方法来考虑父类,并提出一个解决方案。嗨,谢谢你的回答,我已经更新了我原来的问题。我们不能创建抽象类的对象,因为我的父类是@ManagedBean类。您好,谢谢您的回答,我已经更新了我的原始问题。我们不能创建抽象类的对象,因为我的父类是@ManagedBean类。您好,谢谢您的回答,我已经更新了我的原始问题。我们无法生成抽象类的对象,因为我的父类是@ManagedBean类。我编辑了答案,虽然有点不正确,但仍然给出了解决方案嗨,谢谢你的回答,我已经更新了我的原始问题。我们不能创建抽象类的对象,因为我的父类是@ManagedBean类。我编辑了答案,它有点不正确,但仍然给出了解决方案