Java 如何在没有内部类的情况下进行更改?
我有一个如下的例子。它使用两个内部类,可以直接访问其封闭实例的方法和字段。不使用内部类有意义吗?以及如何修改它Java 如何在没有内部类的情况下进行更改?,java,Java,我有一个如下的例子。它使用两个内部类,可以直接访问其封闭实例的方法和字段。不使用内部类有意义吗?以及如何修改它 package java_example150; public class TestThread3{ private int j; public static void main(String[] args){ TestThread3 t = new TestThread3(); Inc inc = t.new Inc();
package java_example150;
public class TestThread3{
private int j;
public static void main(String[] args){
TestThread3 t = new TestThread3();
Inc inc = t.new Inc();
Dec dec = t.new Dec();
for(int i=0;i<2;i++){
Thread ts = new Thread(inc);
ts.start();
ts= new Thread(dec);
ts.start();
}
}
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implements Runnable{
public void run(){
for(int i=0;i<10;i++){
inc();
}
}
}
class Dec implements Runnable{
public void run(){
for(int i=0;i<10;i++){
dec();
}
}
}
}
包java\u示例150;
公共类TestThread3{
私人int j;
公共静态void main(字符串[]args){
TestThread3 t=新的TestThread3();
Inc Inc=t.new Inc();
Dec-Dec=t.new-Dec();
对于(int i=0;i在您的示例中,我认为没有必要对其进行重构。您可以不进行重构。当内部类仅对另一个类是必需的,并且它们只能由该类访问/实例化时,可以使用内部类
如果您在另一个类中需要相同的功能,您可以重构它并将这些类移动到单独的文件中。线程需要有一个Runnable
类型作为线程的入口点传入。内部类是一种很好的方法
使用匿名类可能有意义(特别是在这个简短的示例中)。您可以像这样重写循环:
for(int i=0;i<2;i++){
Thread ts = new Thread(new Runnable() {
public void run() {
for(int i = 0; i < 10; i++) inc();
}
);
ts.start();
ts= new Thread(new Runnable() {
public void run() {
for(int i = 0; i < 10; i++) dec();
}
);
ts.start();
}
for(int i=0;i当您试图使用非内部类时发生了什么?您试图通过避免内部类来解决什么困难
您可以转换为非内部类;只需将TestThread3的实例传递给每个对象。如何将TestThread3的实例传递给每个对象?我很困惑。您能给我看一下代码吗?