标签: inner-classes

使用比较器和内部类进行 Java 排序

鉴于 Java 类的这种组合:

public class OuterClass
    {
        public String           field01;
        public int              field02;
        public InnerClass       innerField
        // ...getters, setters

    public class InnerClass
        {
            public int              innerField01;
            public BigDecimal       innerField02;
            // ...getters, setters
Run Code Online (Sandbox Code Playgroud)

我想按外部和内部字段对它们进行排序。现在,给定 a List<OuterClass> list,我可以轻松地对其进行排序,例如field01

Collections.sort(list, Comparator.comparing(OuterClass::getField01));
Run Code Online (Sandbox Code Playgroud)

但我可以按哪种方式排序InnerClass.innerfield.innerfield01呢?我试过

Collections.sort(list, Comparator.comparing(OuterClass::InnerField::innerField01));
Run Code Online (Sandbox Code Playgroud)

以及其他一些方法,但都没有成功。也许我应该以某种方式使用OuterClass::new,但我不知道如何使用。

java sorting inner-classes comparator

0
推荐指数
1
解决办法
2476
查看次数

在这种情况下,为什么我不能将“this”传递给内部类的方法?

我有一个包含内部类的类,它看起来有点像这样:

class Foo
{
    class Bar
    {
    public:
        void update(const Foo& f)
        {
            //Updates using public getters of Foo
        }
    };
public:
    void doStuff() const
    {
        b_.update(*this);
    }
private:
    Bar b_;
};
Run Code Online (Sandbox Code Playgroud)

该线路b_.update(*this)目前给我错误cannot convert 'this' pointer from 'const Foo::Bar' to 'Foo::Bar &'

这是为什么?该update方法的参数是 type const Foo&,这意味着它不可能修改Foo对象,如果它愿意的话。这不应该满足 const 方法doStuff吗?

我试过在谷歌上搜索一个有同样问题的人一个小时,但我似乎无法正确地用词来找到类似的问题。

我正在尝试做的事情是可能的,还是我需要改变我的设计?

c++ inner-classes

0
推荐指数
1
解决办法
58
查看次数

如何在Python3中将外部类和内部类的参数传递给具有相同对象的内部类?

下面的代码工作正常,我分别为外部类和内部类创建对象并传递参数

class Student:
    def __init__(self,name,rollno):
        self.name = name
        self.rollno = rollno
    def show(self):
        print(self.name,self.rollno)
        #self.lap.show()

    class Laptop: #inner class
        def __init__(self,brand,cpu'):
            self.brand = brand
            self.cpu = cpu
        def show(self):
            print(self.brand,self.cpu)
s1 = Student('Ram',21)
lap1 =s1.Laptop('Dell','i3')
lap1.show()
Run Code Online (Sandbox Code Playgroud)

在第二个代码中,我在外部(学生)类中创建了内部类(笔记本电脑)对象。那么,我们如何将参数传递给内部类呢?

class Student:
    def __init__(self,name,rollno):
        self.name = name
        self.rollno = rollno
        self.lap = self.Laptop()  #lap is the obj of a inner class

    def show(self):
        print(self.name,self.rollno)
        self.lap.show()  
Run Code Online (Sandbox Code Playgroud)

我尝试使用 self.lap = self.Laptop(brand,cpu),分配参数并以不同的方式传递参数,但没有一个对我有用。有什么办法可以让我传递论据吗?

python oop class inner-classes python-3.x

0
推荐指数
1
解决办法
2698
查看次数

在Ruby中,内部类如何访问外部类中定义的变量/方法?

例子:

require "fluent/plugin/output"

module Fluent::Plugin
    class Outer < Fluent::Plugin::Output
        @outer_var = "Hello from outer variable"

        class Inner
            def initialize()
                puts "@outer_var", @outer_var # nil
                log.info "Hello from inner initialize" # undefined local variable or method log
                outer_method() # undefined method `outer_method' for #<Outer::Inner:0x00007fd2100452b0> (NoMethodError)
            end
        end # Inner

        def initialize()
            Inner.new()
            log.info "Hello from outer initialize" # works
        end

        def outer_method
            puts "Hello from outer method"
        end

    end # Outer
end # Fluent::Plugin
Run Code Online (Sandbox Code Playgroud)

如何使内部类可以访问外部变量和方法?这里的示例显示了如何定义内部/外部类,但没有显示如何访问外部类。我知道 Ruby 中不存在内部/外部类的概念,根据这个答案。在仍然是模块一部分的情况下使用 …

ruby oop inner-classes fluentd

0
推荐指数
1
解决办法
692
查看次数

内部类是否在java中作为组合关系工作?

内部类总是在外部类中.如果我们删除了外部类,那么内部类也将被销毁.我不关心内存释放,我只是在思考这个概念.这与构图的概念相同.在这种情况下,内部类必须是现实世界中对象的组合关系的示例.

简而言之,我如何将内在类与现实生活中的面向对象联系起来?通过这个,我的意思是一个非技术性的例子; 也许是与动物或电子游戏相关的隐喻?

如果构造函数是组合的一个很好的例子,那么在面向对象中涉及内部类的基本需求是什么?

以下示例是否准确?


例如

大学是外课.

教师是内在的阶级.


我确实理解面向对象,但我发现很难将内部阶级与现实世界联系起来.你能给我一些指示吗?

java class composition inner-classes

-2
推荐指数
2
解决办法
2944
查看次数

为什么即使在类的构造函数之前,空括号中的代码也会先执行?

虽然这是一个很小的问题要问,想要了解这种奇怪的行为!以下是代码和正在讨论的代码的行为(通过控制台输出).

public class EmptyBracesWithinClass {
    public static void main(String[] args) {
        EmptyBraces eb = new EmptyBraces();
        System.out.println("SYSO within main() method");
    }
}

class EmptyBraces {
    {
        System.out.println("SYSO within empty braces");
    }

    public EmptyBraces() {
        System.out.println("SYSO within constructor() method");
    }
}
Run Code Online (Sandbox Code Playgroud)

控制台输出:

SYSO within empty braces
SYSO within constructor() method
SYSO within main() method
Run Code Online (Sandbox Code Playgroud)

这里的问题是,为什么在对象实例创建EmptyBraces类期间首先执行空括号内的代码片段(尽管它从未声明为STATIC显式)?

java inner-classes

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

为什么我的`Runnable`没有`start`方法?

为什么我必须Thread在内部类中扩展而不是实现Runnable 以下代码有效: -

class Outer{

 Inner innerObj;

 Outer(){
  innerObj = new Inner();
 }

 public void begin(){

  innerObj.start();
 }

 class Inner extends Thread{

  Inner(){
   System.out.println("Thread initialized!");
  }

  public void run(){

    System.out.println("Thread running!");

  }  
 }
}

class Driver{

 public static void main(String[] args){

  Outer o1 = new Outer();
  o1.begin();

 }

}
Run Code Online (Sandbox Code Playgroud)

但是使用a Runnable会导致编译错误: -

class Outer{

 Inner innerObj;

 Outer(){
  innerObj = new Inner();
 }

 public void begin(){

  innerObj.start();
 }

 class Inner implements Runnable{

  Inner(){
   System.out.println("Thread initialized!");
  }

  public …
Run Code Online (Sandbox Code Playgroud)

java inheritance multithreading interface inner-classes

-3
推荐指数
1
解决办法
2363
查看次数

运行具有两个类的Java程序

我想知道如何通过纠正错误来执行这个java程序.

代码是:

import java.io.*;
class start
{
   public static void main(String args[])
   {
      System.out.println("STARTING JAVA PROGRAM");
   }
}
class finish
{
   System.out.println("FINISH");
}
Run Code Online (Sandbox Code Playgroud)

执行此程序产生的错误是:

D:\Downloads\PRO>javac start.java

start.java:10: error: <identifier> expected
System.out.println("FINISH");
start.java:10: error: illegal start of type
System.out.println("FINISH");
Run Code Online (Sandbox Code Playgroud)

我们可以在java程序中允许两个类吗?
任何人都可以帮助我.

java inner-classes

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

python中的内部类和内部内部类有什么区别?

field应该在第 50 行 undefined 吗?我的理解是内部嵌套类对外部类没有可见性,正如我在第 65 行遇到的那样......似乎有点不一致,我希望更好地了解外部嵌套类的可见性以避免任何混淆在将来。

"""######################################### Imports ############################################"""
import turtle
import time
import functools
"""######################################### Key press ##########################################"""

def key_space():  # Resets Level
    field.setLevel()

def key_p():      # Skips Level
    field.nextLevel()

def key_k():      # For making levels
    print([(b.x,b.y) for b in field.getBoxes()])
    
"""######################################## Interface(s) ########################################"""

def stamp(self):  # Interface for drawing polygons.
    turtle.goto(self.canvasX+field.offset[0],self.canvasY+field.offset[1])
    turtle.shape(self.shape)
    turtle.color(self.color)
    turtle.stamp()

def frameBoiler(func): #
    @functools.wraps(func)
    def wrapper_frame_boiler(*args,**kwargs):
        turtle.clear()
        #turtle.getscreen().bgpic('Untitled.png')
        r = func(*args, **kwargs)
        turtle.update()
        time.sleep(0.05)
        return r
    return wrapper_frame_boiler

"""######################################### Game Logic …
Run Code Online (Sandbox Code Playgroud)

python abstract-class nested inner-classes undefined-reference

-5
推荐指数
1
解决办法
318
查看次数