标签: anonymous-class

.Net代表对Java的匿名类的真正优势是什么?

我知道.Net委托的许多用法可以通过使用接口和匿名类的组合在Java中进行模拟,但是在任何情况下委托都有真正的优势并且没有Java等价物吗?

.net java delegates anonymous-class

2
推荐指数
1
解决办法
359
查看次数

Scala单元到匿名类

是否可以将Unit转换为匿名类的方法?

代替:

addSelectionListener(new SelectionListener{
    def widgetSelected(SelectionEvent event): Unit = {
       //...
    }
}
Run Code Online (Sandbox Code Playgroud)

对此:

addSelectionListener toAnonymousClass(classOf[SelectionListener], { 
    /* .. */ 
})
Run Code Online (Sandbox Code Playgroud)

如果没有任何库可以做到这一点,我将如何制作一个?可能吗?

closures scala anonymous-class

2
推荐指数
1
解决办法
448
查看次数

Scala中的多特征构造错误

有人可以帮我理解这里的错误吗?我想我理解Scala中具有特征的匿名类构造.但是,当我尝试应用多个特征时,我得到一个错误,期待";" 或必要的声明结束.如果我也以这种方式声明一个类(具有需要匿名实现代码行的多个特性),同样的问题似乎也适用吗?Line Test 3在下面失败了.谢谢.

class TestTraits 

trait A {def x:Int}
trait B {def y:Int}



object TestTraits {

  def main(args: Array[String]): Unit = {

     val test1 = new TestTraits with A {def x=22}  //OK

     val test2 = new TestTraits with B {def y=33} //OK

     val test3 = new TestTraits with A {def x=22} with B {def y=33} //Errors: - ';' expected but 'with' 


  }  
}
Run Code Online (Sandbox Code Playgroud)

scala anonymous-class

2
推荐指数
1
解决办法
161
查看次数

如何访问匿名对象内声明的字段?

Java允许你在匿名类中声明新字段,但我无法弄清楚如何从外部访问它们,即使将它们设置为公共也不会让我.

class A {
   public static void main(String[] args) {
       Object o = new Object() {
           public int x = 0;
           {
               System.out.println("x: " + x++);
               System.out.println("x: " + x++);
           }
       };
       System.out.println(o.x);
   }
}
Run Code Online (Sandbox Code Playgroud)

我得到这个编译器错误:

$ javac A.java && java A
A.java:10: cannot find symbol
symbol  : variable x
location: class java.lang.Object
       System.out.println(o.x);
                           ^
1 error
Run Code Online (Sandbox Code Playgroud)

为什么?

java visibility anonymous-class inner-classes

2
推荐指数
1
解决办法
1521
查看次数

对匿名类和匿名内部类感到困惑

我去搜索学习如何在Java中使用lambda表达式,但对我来说却出现了混乱.所以我对匿名类的理解是这样的:

public class SomeObject {
   public static void main(String[] args) {
    ArrayList list = new ArrayList();
    list.add(new SomeObject());
   }

}
Run Code Online (Sandbox Code Playgroud)

我之前看过匿名内部类这个术语,但那个时候,我不知道普通的匿名类是什么.我看到很多线程和视频似乎只是将匿名内部类称为"匿名类".他们是同义词吗?我对匿名内部类的理解是:

 public class Rectangle {
 private double length;
 private double width;
 private double perimeter;

    public void calculatePerimeter() {
    perimeter = (2*length) +(2*width);
   }

     public static void main(String[] args) {
       Rectangle square = new Rectangle() {
        public void calculatePerimeter() {
            perimeter = 4*length;
        }
    };
   }

  }
Run Code Online (Sandbox Code Playgroud)

基本上,不是必须为Square编写子类,然后重写calculatePerimeter()方法,我只能创建一次性方形类,并覆盖它们的方法.它是否正确?

因此,匿名内部类与继承有关.我不理解它的使用.也许,这是因为我之前从未使用过它们,或者因为我没有太多的编程经验.你可以给我一些例子或解释它什么时候有用吗?

更新:当我将匿名内部类的代码移动到IDE时,我了解到存在错误; 显然,"正方形"甚至没有继承矩形的字段.这不是没有用吗?

相当于:

public class Rectangle {
 private double length;
 private double …
Run Code Online (Sandbox Code Playgroud)

java lambda anonymous anonymous-inner-class anonymous-class

2
推荐指数
1
解决办法
4064
查看次数

c#创建某事物的实例对象

嗨,我想知道这样的事情是否可能,我确定我的头衔问题不明确.

假设我有一个返回对象的JSON表示的函数.注意:这比任何不能纠正我功能的伪代码更多.

public static json function(object){

}
Run Code Online (Sandbox Code Playgroud)

是否可以定义这样的对象(我正在使用c#)

var exampleObject = { Name: "x" , PhoneNum: "123456789" }
Run Code Online (Sandbox Code Playgroud)

我希望有一种方法可以创建一个具有对象属性的对象,就像在运行时一样,而不必像以下那样创建类:

class exampleObject{
string name;
string phoneNum;
}
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?谢谢.

c# json anonymous-class

2
推荐指数
1
解决办法
117
查看次数

如何在所有子线程完成之后运行主线程

我有一个要求,其中28个线程必须完成一些功能.我在匿名内部类中创建了这些线程,如:

Thread t=new Thread(new Runnable(){public void run() 
                        {//code
                        }}
                                );

                        t.start();
Run Code Online (Sandbox Code Playgroud)

现在我希望在所有这些线程完成工作之后进一步执行.

注意:我对join()方法感到困惑,因为它使我的线程顺序运行.

所以任何人都可以建议我,一旦这些线程完成工作,我怎样才能使主线程运行.

java multithreading anonymous-class inner-classes

2
推荐指数
1
解决办法
4770
查看次数

使用Java匿名类令人惊讶地访问字段

我试图更好地理解Java中匿名类的概念.从本网站的其他答案中,我了解到匿名类可以使用包含类的非最终字段OuterClass.this.myField.

我使用接口创建了以下简单的测试用例AnonInt,以及AnonTest带有foo返回实现的匿名类实例的方法的类AnonInt.Dspite我正在使用System.out.println(a)而不是System.out.println(AnonTest.this.a)代码工作并打印正确的结果.怎么会这样?

public interface AnonInt {
    void print();
}

public class AnonTest {

    private int a;

    public AnonTest(int a) {
        this.a = a;
    }

    public AnonInt foo() {
        return new AnonInt() {

            public void print() {
                System.out.println(a);
            }
        };
    }

    public static void main(String[] args) {
        AnonTest at = new AnonTest(37);
        AnonInt ai = at.foo();
        ai.print();
    }
}
Run Code Online (Sandbox Code Playgroud)

java anonymous-class

2
推荐指数
1
解决办法
71
查看次数

为什么在实例初始值设定项内不允许递增(`x ++;`)尚未声明的字段,但是如果将其包装到匿名类中就可以了吗?

我很困惑,为什么x++;不允许在实例初始值设定项内增加尚未声明的字段(),但是如果包装到匿名类中,则允许在实例初始值设定项内进行递增(是的,匿名类可以访问类字段,但未初始化该字段! )。

class Test {

    { x++; }  // ERR: Cannot reference a field before it is defined

    Object anonFld = new Object() {     
        { x++; }     // fine! Sets x field below to 1 !

        void f() {
            x++; // fine!
        }
    };
    int x;

    // now x = 1     // anon constructor has set it!    

}
Run Code Online (Sandbox Code Playgroud)

java constructor field initializer anonymous-class

2
推荐指数
1
解决办法
71
查看次数

不能在没有空代码块的情况下实例化没有方法的特征

我发现了一个具有特征的有趣条件:

scala> trait Thing[A]
defined trait Thing

scala> val myThing: Thing[Int] = new Thing[Int]
       error: trait Thing is abstract; cannot be instantiated

scala> val myThing: Thing[Int] = new Thing[Int] { }
myThing: Thing[Int] = $anon$1@135f160e
Run Code Online (Sandbox Code Playgroud)

为什么代码块允许我创建 Thing trait 的实例?

scala traits anonymous-class

2
推荐指数
1
解决办法
124
查看次数