标签: anonymous-class

为了添加实例初始化块而创建的匿名类的意外后果

这是一个关于Java代码的问题,例如:

List<String> list = new ArrayList<String>() {{add("hello"); add("goodbye");}}
Run Code Online (Sandbox Code Playgroud)

程序员匿名扩展ArrayList只是为了在实例初始化块中推迟.

问题是:如果程序员的唯一目的只是达到以下目的:

List<String> list = new ArrayList<String>();
list.add("hello");
list.add("goodbye");    
Run Code Online (Sandbox Code Playgroud)

那么第一种方式做到这一点的意外后果是什么?

java anonymous-class

4
推荐指数
2
解决办法
1411
查看次数

匿名类问题

我对这一行有点怀疑:

匿名类无法定义构造函数

那么,为什么我们还可以使用以下语法定义Anonymous类:

new class-name ( [ argument-list ] ) { class-body }
Run Code Online (Sandbox Code Playgroud)

java constructor anonymous-class

4
推荐指数
1
解决办法
1102
查看次数

这种技术在Java中被称为什么?

我是一名C++程序员,当我看到下面的例子时,我正在阅读这个网站.这种技术在Java中被称为什么?它有用吗?

class Application {
...
  public void run() {
    View v = createView();
    v.display();
...
  protected View createView() {
    return new View();
  }
...
}    

class ApplicationTest extends TestCase {

  MockView mockView = new MockView();

  public void testApplication {
    Application a = new Application() {    <---
      protected View createView() {        <---
        return mockView;                   <--- whao, what is this?
      }                                    <---
    };                                     <---
    a.run();
    mockView.validate();
  }

  private class MockView extends View
  {
    boolean isDisplayed = false;

    public void display() …
Run Code Online (Sandbox Code Playgroud)

java anonymous-class

4
推荐指数
1
解决办法
329
查看次数

使用具有作用于函数内部的匿名类的模板

假设我有以下代码段:

template <class T> void f(T arg) { arg(); }

void g()
{
   struct { void operator()(void) { } } foo;

   f(foo);
}
Run Code Online (Sandbox Code Playgroud)

Visual C++接受这个.但是,当我尝试GCC时,我得到:

$ g++ --version # just in case this matters
g++ (Debian 4.4.5-8) 4.4.5
...
$ g++ foo.cc
foo.cc: In function 'void g()':
foo.cc:7: error: no matching function for call to 'f(g()::<anonymous struct>&)'
Run Code Online (Sandbox Code Playgroud)

foo全局作用域并且其类型具有名称时,这是有效的.但是当类型是匿名的在内部声明时g()它不会.

为什么GCC拒绝这个?它是有效的C++吗?

c++ templates anonymous-class

4
推荐指数
1
解决办法
1326
查看次数

布尔值vs布尔值作为trilean开关

我正在开发一个Android应用程序,我刚刚碰到了一些东西.我有一些匿名类(事件监听器).它们是从数据库中参数化的.我做的是这样的:

buttonA.setOnTouchListener(new View.OnTouchListener() {
                        private Boolean isActive = null;
                        private boolean isTrigger;
                        private int onLevel;
                        private int offLevel;
                        private int chIdx;

                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                            if (isActive == null) {
                                Cursor btnSettings = dbHelper.getButtonsTable().fetchButton(1, profileId, currentMode);
                                ...
...
                            }
                            return true;
                        }
Run Code Online (Sandbox Code Playgroud)

将布尔对象用作trilean开关(如果侦听器尚未参数化,它具有空值)或者我应该使用两个布尔变量...或者可能是整数?

你有想法吗?

java boolean anonymous-class

4
推荐指数
1
解决办法
1029
查看次数

在java中编写自定义语法解释器?

我即将开始编写一个演示程序来编写我即将给出的演讲.我想让班上的每个学生都下载这个应用程序,然后能够通过命令行以交互方式创建对象实例(及其图形表示).我决定用Java写的,而不是因为它是我最熟悉的语言,而是因为它有简单的图形类,我可以很肯定的罐子会在他们的计算机上运行.

简介.现在的问题是:

为此程序实现某些自定义命令行语法的好方法是什么?我想使用一个简单,随意的语法,如:

CREATE Monster Bob;    
Bob.jump();   
LS Bob //to list Bob's methods or something.   
LS CREATE //to list all the classes    
Run Code Online (Sandbox Code Playgroud)

首先,当我想到这个问题时,我会首先想到的是什么.

我可以想象我可以在树型链接中拥有一组地图.我可以解析每个关键词作为下一个地图的关键.因此,"CREATE Monster Bob"可以被评估为

1)搜索关键字"CREATE"的关键字映射.返回值,这是对类映射的引用.2)搜索类映射关键"怪物".返回值,这是一个实现一些接口Leaf的工厂类,它让我知道它是一个叶子值(我将使用instanceof进行检查).
3)也许Leaf接口将包含一个名为execute()的方法,它可以做任何想做的事情.在这种情况下,它将创建一个Monster对象,将此对象添加到名为Objects的名为Bob的地图中.(这个Leaf业务听起来很丑,但可以清理.)

凉.但这句话对我来说有点困难:Bob.jump();

1)搜索"Bob"的一些对象图.返回一些对象实现一个接口与等的方法"评价(字符串或多个)",并将它传递字符串"跳()"
2)鲍勃搜索的用于"跳()"方法的一些内部地图,然后...?在c ++中,我将使用键作为指向要执行的成员函数Monster.jump()的指针.但是我不相信java中没有函数指针这样的东西.我已经读过你可以使用匿名类来完成这个,虽然我没有尝试过.看起来它会起作用.

所以,这将有效,但有更优雅的方式去做吗?我以前从未写过任何类型的翻译.如果有人提供一些提示,我想以一种很好的方式做一些事情并在这个过程中学到一些东西.如果我不是很结构化的话,这似乎是一种可能容易出错的方法,特别是当Bob和其他所有对象开始解析他们自己的指令并使用匿名函数时.此外,看起来除了普通代码之外,每个类都需要一个运行时就绪的接口.

我也不知道Java的那么好,所以如果有一些景点在那里我可能会撞到南墙,然后我想太了解.

我在这里先向您的帮助表示感谢.

java parsing runtime anonymous-class

4
推荐指数
1
解决办法
4196
查看次数

Java - 匿名对象占用多少空间?

假设以下场景:

void thisIsCalledManyTimes(){
    // ....
    someObject.executeIfNecessary( new Runnable(){
         void run(){ //do sth here}
    });
}
Run Code Online (Sandbox Code Playgroud)

匿名对象占用多少空间?我知道每个对象匿名obj都会有一个指向run其方法查找表中相同实现的指针.

java heap space anonymous-class

4
推荐指数
1
解决办法
715
查看次数

如何传递或分配在runOnUiThread中获得的值

在WebView的子类中,我将其放在getTitle()的重写方法中:

      @Override
      public String getTitle() {
        Activity a = getVoTts().getActivity();
        a.runOnUiThread(new Runnable() {
            public void run() { 
                String tit = VoWebView.super.getTitle();
            }
        });


       String title = tit;  // this is what I WANT to do, it won't compile of course
       ...
       ...
      }
Run Code Online (Sandbox Code Playgroud)

但是String tit是在匿名Runnable类中关闭的,因此当然不能在该方法下访问。

是否有任何技术或“技巧”可以让我将在匿名Runnable类中获取的值传递给语句(使用同一方法)或将其分配给数据成员?

java android anonymous-class runnable

4
推荐指数
1
解决办法
2630
查看次数

为什么我不能调用添加到Java中的匿名类的方法?

如果匿名类正在扩展/实现类/接口,为什么我不能添加新方法?

换句话说,这有效:

class A {
    void a() {
        System.out.println("a in A");
    }
}

class B extends A {
    @Override
    void a() {
        System.out.println("a in B");
    }
    void b() {
        System.out.println("b in B");
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用:

class C {
    A anonA() {
        return new A() {
            void b() {
                System.out.println("b in C");
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

鉴于:

public static void main(String[] args) {
    B b = new B();
    b.b();

    // C c = new C();
    // A anonA = c.anonA();
    // …
Run Code Online (Sandbox Code Playgroud)

java anonymous-class java-7

4
推荐指数
1
解决办法
246
查看次数

golang匿名字段的类型映射

我以为我可以使用匿名字段制作有序的地图类型:

type customMap struct{
    map[string]string
    ordered []string
}
Run Code Online (Sandbox Code Playgroud)

我可以在哪里引用地图customMapInstance["key"]并迭代ordered.唉,似乎数组和地图不是有效的匿名字段.我怀疑这是有充分理由的......

struct map anonymous-class go

4
推荐指数
1
解决办法
2534
查看次数

标签 统计

anonymous-class ×10

java ×8

android ×1

boolean ×1

c++ ×1

constructor ×1

go ×1

heap ×1

java-7 ×1

map ×1

parsing ×1

runnable ×1

runtime ×1

space ×1

struct ×1

templates ×1